Fri, 09 Dec 2005 04:05:55 +0000
[gaim-migrate @ 14737]
Don't show capabilities in oscar tooltips. They're long and
not very useful. The info is still in the "get info" window.
| 2086 | 1 | /* |
| 2 | * gaim | |
| 3 | * | |
| 4 | * Some code copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
| 6302 | 5 | * Some code copyright (C) 1999-2001, Eric Warmenhoven |
| 6 | * Some code copyright (C) 2001-2003, Sean Egan | |
|
11155
12904075510f
[gaim-migrate @ 13237]
Mark Doliner <markdoliner@pidgin.im>
parents:
11153
diff
changeset
|
7 | * Some code copyright (C) 2001-2005, Mark Doliner <thekingant@users.sourceforge.net> |
|
11049
6c6adfe954f4
[gaim-migrate @ 12983]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11033
diff
changeset
|
8 | * Some code copyright (C) 2005, Jonathan Clark <ardentlygnarly@users.sourceforge.net> |
| 6302 | 9 | * |
| 10 | * Most libfaim code copyright (C) 1998-2001 Adam Fritzler <afritz@auk.cx> | |
|
8151
195a587b6c32
[gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents:
8150
diff
changeset
|
11 | * Some libfaim code copyright (C) 2001-2004 Mark Doliner <thekingant@users.sourceforge.net> |
| 2086 | 12 | * |
| 13 | * This program is free software; you can redistribute it and/or modify | |
| 14 | * it under the terms of the GNU General Public License as published by | |
| 15 | * the Free Software Foundation; either version 2 of the License, or | |
| 16 | * (at your option) any later version. | |
| 17 | * | |
| 18 | * This program is distributed in the hope that it will be useful, | |
| 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 10485 | 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 2086 | 21 | * GNU General Public License for more details. |
| 22 | * | |
| 23 | * You should have received a copy of the GNU General Public License | |
| 24 | * along with this program; if not, write to the Free Software | |
| 25 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 26 | * | |
| 27 | */ | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
28 | #include "internal.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
29 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
30 | #include "account.h" |
|
5638
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5631
diff
changeset
|
31 | #include "accountopt.h" |
|
6846
f814f02dca87
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
32 | #include "buddyicon.h" |
|
11404
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
33 | #include "cipher.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
34 | #include "conversation.h" |
|
7083
bdf557b0eea4
[gaim-migrate @ 7648]
Christian Hammond <chipx86@chipx86.com>
parents:
7082
diff
changeset
|
35 | #include "core.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
36 | #include "debug.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
37 | #include "ft.h" |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6907
diff
changeset
|
38 | #include "imgstore.h" |
| 8231 | 39 | #include "network.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
40 | #include "notify.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
41 | #include "privacy.h" |
| 2086 | 42 | #include "prpl.h" |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
43 | #include "proxy.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
44 | #include "request.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
45 | #include "util.h" |
| 9943 | 46 | #include "version.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
47 | |
| 2086 | 48 | #include "aim.h" |
| 49 | ||
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
50 | #define OSCAR_STATUS_ID_INVISIBLE "invisible" |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
51 | #define OSCAR_STATUS_ID_OFFLINE "offline" |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
52 | #define OSCAR_STATUS_ID_AVAILABLE "available" |
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
53 | #define OSCAR_STATUS_ID_AWAY "away" |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
54 | #define OSCAR_STATUS_ID_DND "dnd" |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
55 | #define OSCAR_STATUS_ID_NA "na" |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
56 | #define OSCAR_STATUS_ID_OCCUPIED "occupied" |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
57 | #define OSCAR_STATUS_ID_FREE4CHAT "free4chat" |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
58 | #define OSCAR_STATUS_ID_CUSTOM "custom" |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
59 | |
| 2086 | 60 | #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3" |
| 61 | ||
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
62 | #define OSCAR_CONNECT_STEPS 6 |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
63 | #define OSCAR_DEFAULT_LOGIN_SERVER "login.oscar.aol.com" |
|
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
64 | #define OSCAR_DEFAULT_LOGIN_PORT 5190 |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
65 | #define OSCAR_DEFAULT_CUSTOM_ENCODING "ISO-8859-1" |
| 10570 | 66 | #define OSCAR_DEFAULT_AUTHORIZATION TRUE |
| 67 | #define OSCAR_DEFAULT_HIDE_IP TRUE | |
| 68 | #define OSCAR_DEFAULT_WEB_AWARE FALSE | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
69 | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
70 | /* Milliseconds each file transfer ip address will be given to make a connection. */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
71 | #define FT_CLIENTIP_TIMEOUT 1000 /* 5000 */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
72 | #define FT_VERIFIEDIP_TIMEOUT 5000 /* 15000 */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
73 | #define FT_REDIR_TIMEOUT 10000 /* 20000 */ /* Time to wait for redirected transfer */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
74 | #define FT_PROXYIP_TIMEOUT 300000 /* 120000 */ /* Time to create a checksum for VERY large files */ |
|
11084
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
75 | |
|
7376
67d0debf3d8e
[gaim-migrate @ 7971]
Mark Doliner <markdoliner@pidgin.im>
parents:
7366
diff
changeset
|
76 | static int caps_aim = AIM_CAPS_CHAT | AIM_CAPS_BUDDYICON | AIM_CAPS_DIRECTIM | AIM_CAPS_SENDFILE | AIM_CAPS_INTEROPERATE | AIM_CAPS_ICHAT; |
|
67d0debf3d8e
[gaim-migrate @ 7971]
Mark Doliner <markdoliner@pidgin.im>
parents:
7366
diff
changeset
|
77 | static int caps_icq = AIM_CAPS_BUDDYICON | AIM_CAPS_DIRECTIM | AIM_CAPS_SENDFILE | AIM_CAPS_ICQUTF8 | AIM_CAPS_INTEROPERATE | AIM_CAPS_ICHAT; |
|
3458
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
78 | |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
79 | static fu8_t features_aim[] = {0x01, 0x01, 0x01, 0x02}; |
|
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
80 | static fu8_t features_icq[] = {0x01, 0x06}; |
| 11172 | 81 | static fu8_t features_icq_offline[] = {0x01}; |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
82 | static fu8_t ck[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; |
| 2086 | 83 | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
84 | typedef struct _OscarData OscarData; |
|
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
85 | struct _OscarData { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
86 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
87 | aim_conn_t *conn; |
| 2086 | 88 | |
| 89 | guint cnpa; | |
| 90 | guint paspa; | |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
91 | guint emlpa; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
92 | guint icopa; |
| 2086 | 93 | |
| 4823 | 94 | gboolean iconconnecting; |
| 5842 | 95 | gboolean set_icon; |
| 4823 | 96 | |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
97 | GSList *create_rooms; |
| 2086 | 98 | |
| 99 | gboolean conf; | |
| 100 | gboolean reqemail; | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
101 | gboolean setemail; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
102 | char *email; |
| 2979 | 103 | gboolean setnick; |
| 104 | char *newsn; | |
| 2086 | 105 | gboolean chpass; |
| 106 | char *oldp; | |
| 107 | char *newp; | |
|
11651
02f366130354
[gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents:
11643
diff
changeset
|
108 | |
| 2086 | 109 | GSList *oscar_chats; |
| 110 | GSList *direct_ims; | |
| 3630 | 111 | GSList *file_transfers; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
112 | GHashTable *buddyinfo; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
113 | GSList *requesticon; |
| 2086 | 114 | |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
115 | gboolean killme; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
116 | gboolean icq; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
117 | guint icontimer; |
|
5968
f3e4bc7bd718
[gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents:
5954
diff
changeset
|
118 | guint getblisttimer; |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
119 | guint getinfotimer; |
|
10567
87b02dd40349
[gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10565
diff
changeset
|
120 | gint timeoffset; |
| 2993 | 121 | |
| 122 | struct { | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
123 | guint maxwatchers; /* max users who can watch you */ |
| 2993 | 124 | guint maxbuddies; /* max users you can watch */ |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
125 | guint maxgroups; /* max groups in server list */ |
| 2993 | 126 | guint maxpermits; /* max users on permit list */ |
| 127 | guint maxdenies; /* max users on deny list */ | |
| 128 | guint maxsiglen; /* max size (bytes) of profile */ | |
| 129 | guint maxawaymsglen; /* max size (bytes) of posted away message */ | |
| 130 | } rights; | |
| 2086 | 131 | }; |
| 132 | ||
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
133 | struct create_room { |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
134 | char *name; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
135 | int exchange; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
136 | }; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
137 | |
| 2086 | 138 | struct chat_connection { |
| 139 | char *name; | |
| 140 | char *show; /* AOL did something funny to us */ | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
141 | fu16_t exchange; |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
142 | fu16_t instance; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
143 | aim_conn_t *conn; |
| 2086 | 144 | int inpa; |
| 145 | int id; | |
| 5575 | 146 | GaimConnection *gc; /* i hate this. */ |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
147 | GaimConversation *conv; /* bah. */ |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
148 | int maxlen; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
149 | int maxvis; |
| 2086 | 150 | }; |
| 151 | ||
| 8971 | 152 | struct oscar_direct_im { |
| 5575 | 153 | GaimConnection *gc; |
| 2086 | 154 | char name[80]; |
| 155 | int watcher; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
156 | aim_conn_t *conn; |
| 3008 | 157 | gboolean connected; |
| 8978 | 158 | gboolean gpc_pend; |
| 159 | gboolean killme; | |
| 8984 | 160 | gboolean donttryagain; |
| 2086 | 161 | }; |
| 162 | ||
| 163 | struct ask_direct { | |
| 5575 | 164 | GaimConnection *gc; |
| 2086 | 165 | char *sn; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
166 | char ip[64]; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
167 | fu8_t cookie[8]; |
| 8984 | 168 | gboolean donttryagain; |
| 2086 | 169 | }; |
| 170 | ||
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
171 | /* |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
172 | * Various PRPL-specific buddy info that we want to keep track of |
|
11651
02f366130354
[gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents:
11643
diff
changeset
|
173 | * Some other info is maintained by locate.c, and I'd like to move |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
174 | * the rest of this to libfaim, mostly im.c |
|
11651
02f366130354
[gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents:
11643
diff
changeset
|
175 | * |
|
02f366130354
[gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents:
11643
diff
changeset
|
176 | * TODO: I think all of this should use the status API. |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
177 | */ |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
178 | struct buddyinfo { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
179 | gboolean typingnot; |
| 6857 | 180 | fu32_t ipaddr; |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
181 | |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
182 | unsigned long ico_me_len; |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
183 | unsigned long ico_me_csum; |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
184 | time_t ico_me_time; |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
185 | gboolean ico_informed; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
186 | |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
187 | unsigned long ico_len; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
188 | unsigned long ico_csum; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
189 | time_t ico_time; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
190 | gboolean ico_need; |
| 7406 | 191 | gboolean ico_sent; |
| 2086 | 192 | }; |
| 193 | ||
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
194 | struct name_data { |
| 5575 | 195 | GaimConnection *gc; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
196 | gchar *name; |
| 3453 | 197 | gchar *nick; |
| 3141 | 198 | }; |
| 199 | ||
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
200 | static char *msgerrreason[] = { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
201 | N_("Invalid error"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
202 | N_("Invalid SNAC"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
203 | N_("Rate to host"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
204 | N_("Rate to client"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
205 | N_("Not logged in"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
206 | N_("Service unavailable"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
207 | N_("Service not defined"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
208 | N_("Obsolete SNAC"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
209 | N_("Not supported by host"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
210 | N_("Not supported by client"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
211 | N_("Refused by client"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
212 | N_("Reply too big"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
213 | N_("Responses lost"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
214 | N_("Request denied"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
215 | N_("Busted SNAC payload"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
216 | N_("Insufficient rights"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
217 | N_("In local permit/deny"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
218 | N_("Too evil (sender)"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
219 | N_("Too evil (receiver)"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
220 | N_("User temporarily unavailable"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
221 | N_("No match"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
222 | N_("List overflow"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
223 | N_("Request ambiguous"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
224 | N_("Queue full"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
225 | N_("Not while on AOL") |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
226 | }; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
227 | static int msgerrreasonlen = 25; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
228 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
229 | /* All the libfaim->gaim callback functions */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
230 | 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
|
231 | static int gaim_parse_login (aim_session_t *, aim_frame_t *, ...); |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
232 | static int gaim_parse_auth_securid_request(aim_session_t *, aim_frame_t *, ...); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
233 | static int gaim_handle_redirect (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
234 | static int gaim_info_change (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
235 | static int gaim_account_confirm (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
236 | static int gaim_parse_oncoming (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
237 | static int gaim_parse_offgoing (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
238 | 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
|
239 | static int gaim_parse_misses (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
240 | static int gaim_parse_clientauto (aim_session_t *, aim_frame_t *, ...); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
241 | static int gaim_parse_userinfo (aim_session_t *, aim_frame_t *, ...); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
242 | static int gaim_reqinfo_timeout (aim_session_t *, aim_frame_t *, ...); |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
243 | static int gaim_got_infoblock (aim_session_t *sess, aim_frame_t *fr, ...); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
244 | static int gaim_parse_motd (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
245 | static int gaim_chatnav_info (aim_session_t *, aim_frame_t *, ...); |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
246 | static int gaim_conv_chat_join (aim_session_t *, aim_frame_t *, ...); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
247 | static int gaim_conv_chat_leave (aim_session_t *, aim_frame_t *, ...); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
248 | static int gaim_conv_chat_info_update (aim_session_t *, aim_frame_t *, ...); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
249 | static int gaim_conv_chat_incoming_msg(aim_session_t *, aim_frame_t *, ...); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
250 | static int gaim_email_parseupdate(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
251 | static int gaim_icon_error (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
252 | static int gaim_icon_parseicon (aim_session_t *, aim_frame_t *, ...); |
|
5844
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
253 | static int oscar_icon_req (aim_session_t *, aim_frame_t *, ...); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
254 | static int gaim_parse_msgack (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
255 | static int gaim_parse_ratechange (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
256 | static int gaim_parse_evilnotify (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
257 | static int gaim_parse_searcherror(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
258 | static int gaim_parse_searchreply(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
259 | static int gaim_bosrights (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
260 | static int gaim_connerr (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
261 | static int conninitdone_admin (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
262 | static int conninitdone_bos (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
263 | static int conninitdone_chatnav (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
264 | static int conninitdone_chat (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
265 | static int conninitdone_email (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
266 | static int conninitdone_icon (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
267 | static int gaim_parse_msgerr (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
268 | static int gaim_parse_mtn (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
269 | static int gaim_parse_locaterights(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
270 | static int gaim_parse_buddyrights(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
271 | static int gaim_parse_locerr (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
272 | 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
|
273 | static int gaim_parse_genericerr (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
274 | static int gaim_memrequest (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
275 | static int gaim_selfinfo (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
276 | static int gaim_offlinemsg (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
277 | static int gaim_offlinemsgdone (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
278 | static int gaim_icqalias (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
279 | static int gaim_icqinfo (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
280 | static int gaim_popup (aim_session_t *, aim_frame_t *, ...); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
281 | |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
282 | static int gaim_ssi_parseerr (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
283 | static int gaim_ssi_parserights (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
284 | static int gaim_ssi_parselist (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
285 | static int gaim_ssi_parseack (aim_session_t *, aim_frame_t *, ...); |
|
8227
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
286 | static int gaim_ssi_parseadd (aim_session_t *, aim_frame_t *, ...); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
287 | static int gaim_ssi_authgiven (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
288 | static int gaim_ssi_authrequest (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
289 | static int gaim_ssi_authreply (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
290 | static int gaim_ssi_gotadded (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
291 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
292 | /* for DirectIM/image transfer */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
293 | static int gaim_odc_initiate (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
294 | static int gaim_odc_incoming (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
295 | static int gaim_odc_typing (aim_session_t *, aim_frame_t *, ...); |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6907
diff
changeset
|
296 | static int gaim_odc_update_ui (aim_session_t *, aim_frame_t *, ...); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
297 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
298 | /* for file transfer */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
299 | static int oscar_sendfile_estblsh(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
300 | static int oscar_sendfile_prompt (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
301 | static int oscar_sendfile_ack (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
302 | static int oscar_sendfile_done (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
303 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
304 | static gboolean gaim_icon_timerfunc(gpointer data); |
| 8971 | 305 | static void oscar_callback(gpointer data, gint source, GaimInputCondition condition); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
306 | static void oscar_xfer_init_recv(GaimXfer *xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
307 | static void oscar_xfer_init_send(GaimXfer *xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
308 | |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
309 | static void oscar_direct_im_initiate(GaimConnection *gc, const char *who, const guchar *cookie); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
310 | static void recent_buddies_cb(const char *name, GaimPrefType type, gpointer value, gpointer data); |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
311 | static void oscar_set_info(GaimConnection *gc, const char *info); |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
312 | static void oscar_set_info_and_status(GaimAccount *account, gboolean setinfo, const char *rawinfo, gboolean setstatus, GaimStatus *status); |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
313 | |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
314 | static void oscar_free_name_data(struct name_data *data) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
315 | g_free(data->name); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
316 | g_free(data->nick); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
317 | g_free(data); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
318 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
319 | |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
320 | static void oscar_free_buddyinfo(void *data) { |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
321 | struct buddyinfo *bi = data; |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
322 | g_free(bi); |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
323 | } |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
324 | |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
325 | static fu32_t oscar_charset_check(const char *utf8) |
|
5129
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 | int i = 0; |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
328 | int charset = AIM_CHARSET_ASCII; |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
329 | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
330 | /* Determine how we can send this message. Per the warnings elsewhere |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
331 | * in this file, these little checks determine the simplest encoding |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
332 | * we can use for a given message send using it. */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
333 | while (utf8[i]) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
334 | if ((unsigned char)utf8[i] > 0x7f) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
335 | /* not ASCII! */ |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
336 | charset = AIM_CHARSET_CUSTOM; |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
337 | break; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
338 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
339 | i++; |
|
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 | while (utf8[i]) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
342 | /* ISO-8859-1 is 0x00-0xbf in the first byte |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
343 | * followed by 0xc0-0xc3 in the second */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
344 | if ((unsigned char)utf8[i] < 0x80) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
345 | i++; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
346 | continue; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
347 | } else if (((unsigned char)utf8[i] & 0xfc) == 0xc0 && |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
348 | ((unsigned char)utf8[i + 1] & 0xc0) == 0x80) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
349 | i += 2; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
350 | continue; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
351 | } |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
352 | charset = AIM_CHARSET_UNICODE; |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
353 | break; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
354 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
355 | |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
356 | return charset; |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
357 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
358 | |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
359 | /* |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
360 | * Take a string of the form charset="bleh" where bleh is |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
361 | * one of us-ascii, utf-8, iso-8859-1, or unicode-2-0, and |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
362 | * return a newly allocated string containing bleh. |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
363 | */ |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
364 | static gchar *oscar_encoding_extract(const char *encoding) |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
365 | { |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
366 | gchar *ret = NULL; |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
367 | char *begin, *end; |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
368 | |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
369 | g_return_val_if_fail(encoding != NULL, NULL); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
370 | |
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
8733
diff
changeset
|
371 | /* Make sure encoding begins with charset= */ |
| 10540 | 372 | if (strncmp(encoding, "text/aolrtf; charset=", 21) && |
| 373 | strncmp(encoding, "text/x-aolrtf; charset=", 23)) | |
| 374 | { | |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
375 | return NULL; |
| 10540 | 376 | } |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
377 | |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
378 | begin = strchr(encoding, '"'); |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
379 | end = strrchr(encoding, '"'); |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
380 | |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
381 | if ((begin == NULL) || (end == NULL) || (begin >= end)) |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
382 | return NULL; |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
383 | |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
384 | ret = g_strndup(begin+1, (end-1) - begin); |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
385 | |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
386 | return ret; |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
387 | } |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
388 | |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
389 | static gchar * |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
390 | oscar_encoding_to_utf8(const char *encoding, const char *text, int textlen) |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
391 | { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
392 | gchar *utf8 = NULL; |
|
9595
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
393 | |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
394 | if ((encoding == NULL) || encoding[0] == '\0') { |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
395 | gaim_debug_info("oscar", "Empty encoding, assuming UTF-8\n"); |
|
10396
1fcd3715444b
[gaim-migrate @ 11626]
Mark Doliner <markdoliner@pidgin.im>
parents:
10376
diff
changeset
|
396 | } else if (!strcasecmp(encoding, "iso-8859-1")) { |
| 10376 | 397 | utf8 = g_convert(text, textlen, "UTF-8", "iso-8859-1", NULL, NULL, NULL); |
|
10396
1fcd3715444b
[gaim-migrate @ 11626]
Mark Doliner <markdoliner@pidgin.im>
parents:
10376
diff
changeset
|
398 | } else if (!strcasecmp(encoding, "ISO-8859-1-Windows-3.1-Latin-1")) { |
| 10375 | 399 | utf8 = g_convert(text, textlen, "UTF-8", "Windows-1252", NULL, NULL, NULL); |
|
10396
1fcd3715444b
[gaim-migrate @ 11626]
Mark Doliner <markdoliner@pidgin.im>
parents:
10376
diff
changeset
|
400 | } else if (!strcasecmp(encoding, "unicode-2-0")) { |
|
9595
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
401 | utf8 = g_convert(text, textlen, "UTF-8", "UCS-2BE", NULL, NULL, NULL); |
|
10396
1fcd3715444b
[gaim-migrate @ 11626]
Mark Doliner <markdoliner@pidgin.im>
parents:
10376
diff
changeset
|
402 | } else if (strcasecmp(encoding, "us-ascii") && strcmp(encoding, "utf-8")) { |
|
9595
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
403 | gaim_debug_warning("oscar", "Unrecognized character encoding \"%s\", " |
|
10096
2dba52b4a949
[gaim-migrate @ 11118]
Mark Doliner <markdoliner@pidgin.im>
parents:
10087
diff
changeset
|
404 | "attempting to convert to UTF-8 anyway\n", encoding); |
|
9595
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
405 | utf8 = g_convert(text, textlen, "UTF-8", encoding, NULL, NULL, NULL); |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
406 | } |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
407 | |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
408 | /* |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
409 | * If utf8 is still NULL then either the encoding is us-ascii/utf-8 or |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
410 | * we have been unable to convert the text to utf-8 from the encoding |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
411 | * that was specified. So we check if the text is valid utf-8 then |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
412 | * just copy it. |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
413 | */ |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
414 | if (utf8 == NULL) { |
| 9638 | 415 | if (textlen != 0 && *text != '\0' |
| 416 | && !g_utf8_validate(text, textlen, NULL)) | |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
417 | utf8 = g_strdup(_("(There was an error receiving this message. The buddy you are speaking to most likely has a buggy client.)")); |
| 9476 | 418 | else |
| 9481 | 419 | utf8 = g_strndup(text, textlen); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
420 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
421 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
422 | return utf8; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
423 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
424 | |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
425 | static gchar * |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
426 | gaim_plugin_oscar_convert_to_utf8(const gchar *data, gsize datalen, const char *charsetstr, gboolean fallback) |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
427 | { |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
428 | gchar *ret = NULL; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
429 | GError *err = NULL; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
430 | |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
431 | if ((charsetstr == NULL) || (*charsetstr == '\0')) |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
432 | return NULL; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
433 | |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
434 | if (strcasecmp("UTF-8", charsetstr)) { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
435 | if (fallback) |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
436 | ret = g_convert_with_fallback(data, datalen, "UTF-8", charsetstr, "?", NULL, NULL, &err); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
437 | else |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
438 | ret = g_convert(data, datalen, "UTF-8", charsetstr, NULL, NULL, &err); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
439 | if (err != NULL) { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
440 | gaim_debug_warning("oscar", "Conversation from %s failed: %s.\n", |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
441 | charsetstr, err->message); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
442 | g_error_free(err); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
443 | } |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
444 | } else { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
445 | if (g_utf8_validate(data, datalen, NULL)) |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
446 | ret = g_strndup(data, datalen); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
447 | else |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
448 | gaim_debug_warning("oscar", "String is not valid UTF-8.\n"); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
449 | } |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
450 | |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
451 | return ret; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
452 | } |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
453 | |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
454 | /* |
|
11081
c0b5f17f4442
[gaim-migrate @ 13095]
Mark Doliner <markdoliner@pidgin.im>
parents:
11049
diff
changeset
|
455 | * This attemps to decode an incoming IM into a UTF8 string. |
|
c0b5f17f4442
[gaim-migrate @ 13095]
Mark Doliner <markdoliner@pidgin.im>
parents:
11049
diff
changeset
|
456 | * |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
457 | * We try decoding using two different character sets. The charset |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
458 | * specified in the IM determines the order in which we attempt to |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
459 | * decode. We do this because there are lots of broken ICQ clients |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
460 | * that don't correctly send non-ASCII messages. And if Gaim isn't |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
461 | * able to deal with that crap, then people complain like banshees. |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
462 | * charsetstr1 is always set to what the correct encoding should be. |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
463 | */ |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
464 | static gchar * |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
465 | gaim_plugin_oscar_decode_im_part(GaimAccount *account, const char *sourcesn, fu16_t charset, fu16_t charsubset, const gchar *data, gsize datalen) |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
466 | { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
467 | gchar *ret = NULL; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
468 | const gchar *charsetstr1, *charsetstr2; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
469 | |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
470 | gaim_debug_info("oscar", "Parsing IM part, charset=0x%04hx, charsubset=0x%04hx, datalen=%hd\n", charset, charsubset, datalen); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
471 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
472 | if ((datalen == 0) || (data == NULL)) |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
473 | return NULL; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
474 | |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
475 | if (charset == AIM_CHARSET_UNICODE) { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
476 | charsetstr1 = "UCS-2BE"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
477 | charsetstr2 = "UTF-8"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
478 | } else if (charset == AIM_CHARSET_CUSTOM) { |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
479 | if ((sourcesn != NULL) && isdigit(sourcesn[0])) |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
480 | charsetstr1 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
481 | else |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
482 | charsetstr1 = "ISO-8859-1"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
483 | charsetstr2 = "UTF-8"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
484 | } else if (charset == AIM_CHARSET_ASCII) { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
485 | /* Should just be "ASCII" */ |
|
9914
93b0188fc369
[gaim-migrate @ 10806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9908
diff
changeset
|
486 | charsetstr1 = "ASCII"; |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
487 | charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
488 | } else if (charset == 0x000d) { |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
489 | /* Mobile AIM client on a Nokia 3100 and an LG VX6000 */ |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
490 | charsetstr1 = "ISO-8859-1"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
491 | charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
492 | } else { |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
493 | /* Unknown, hope for valid UTF-8... */ |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
494 | charsetstr1 = "UTF-8"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
495 | charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
496 | } |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
497 | |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
498 | ret = gaim_plugin_oscar_convert_to_utf8(data, datalen, charsetstr1, FALSE); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
499 | if (ret == NULL) |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
500 | ret = gaim_plugin_oscar_convert_to_utf8(data, datalen, charsetstr2, TRUE); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
501 | if (ret == NULL) |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
502 | ret = g_strdup(_("(There was an error receiving this message. The buddy you are speaking to most likely has a buggy client.)")); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
503 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
504 | return ret; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
505 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
506 | |
|
11081
c0b5f17f4442
[gaim-migrate @ 13095]
Mark Doliner <markdoliner@pidgin.im>
parents:
11049
diff
changeset
|
507 | /* |
|
c0b5f17f4442
[gaim-migrate @ 13095]
Mark Doliner <markdoliner@pidgin.im>
parents:
11049
diff
changeset
|
508 | * Figure out what encoding to use when sending a given outgoing message. |
|
c0b5f17f4442
[gaim-migrate @ 13095]
Mark Doliner <markdoliner@pidgin.im>
parents:
11049
diff
changeset
|
509 | */ |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
510 | static void |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
511 | gaim_plugin_oscar_convert_to_best_encoding(GaimConnection *gc, const char *destsn, const gchar *from, |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
512 | gchar **msg, int *msglen_int, |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
513 | fu16_t *charset, fu16_t *charsubset) |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
514 | { |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
515 | OscarData *od = gc->proto_data; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
516 | GaimAccount *account = gaim_connection_get_account(gc); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
517 | GError *err = NULL; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
518 | aim_userinfo_t *userinfo = NULL; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
519 | const gchar *charsetstr; |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
520 | gsize msglen; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
521 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
522 | /* Attempt to send as ASCII */ |
|
10098
364dcec11abd
[gaim-migrate @ 11120]
Mark Doliner <markdoliner@pidgin.im>
parents:
10097
diff
changeset
|
523 | if (oscar_charset_check(from) == AIM_CHARSET_ASCII) { |
|
10097
cdf1f787073f
[gaim-migrate @ 11119]
Calle Englund <notcalle@users.sourceforge.net>
parents:
10096
diff
changeset
|
524 | *msg = g_convert(from, strlen(from), "ASCII", "UTF-8", NULL, &msglen, NULL); |
|
10098
364dcec11abd
[gaim-migrate @ 11120]
Mark Doliner <markdoliner@pidgin.im>
parents:
10097
diff
changeset
|
525 | *charset = AIM_CHARSET_ASCII; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
526 | *charsubset = 0x0000; |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
527 | *msglen_int = msglen; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
528 | return; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
529 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
530 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
531 | /* |
| 10565 | 532 | * If we're sending to an ICQ user, and they are in our |
| 533 | * buddy list, and they are advertising the Unicode | |
| 534 | * capability, and they are online, then attempt to send | |
| 535 | * as UCS-2BE. | |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
536 | */ |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
537 | if ((destsn != NULL) && aim_sn_is_icq(destsn)) |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
538 | userinfo = aim_locate_finduserinfo(od->sess, destsn); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
539 | |
| 10565 | 540 | if ((userinfo != NULL) && (userinfo->capabilities & AIM_CAPS_ICQUTF8)) |
| 541 | { | |
| 542 | GaimBuddy *b; | |
| 543 | b = gaim_find_buddy(account, destsn); | |
| 544 | if ((b != NULL) && (GAIM_BUDDY_IS_ONLINE(b))) | |
| 545 | { | |
| 546 | *msg = g_convert(from, strlen(from), "UCS-2BE", "UTF-8", NULL, &msglen, NULL); | |
| 547 | if (*msg != NULL) | |
| 548 | { | |
| 549 | *charset = AIM_CHARSET_UNICODE; | |
| 550 | *charsubset = 0x0000; | |
| 551 | *msglen_int = msglen; | |
| 552 | return; | |
| 553 | } | |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
554 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
555 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
556 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
557 | /* |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
558 | * If this is AIM then attempt to send as ISO-8859-1. If this is |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
559 | * ICQ then attempt to send as the user specified character encoding. |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
560 | */ |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
561 | charsetstr = "ISO-8859-1"; |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
562 | if ((destsn != NULL) && aim_sn_is_icq(destsn)) |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
563 | charsetstr = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
564 | |
|
10097
cdf1f787073f
[gaim-migrate @ 11119]
Calle Englund <notcalle@users.sourceforge.net>
parents:
10096
diff
changeset
|
565 | /* |
|
cdf1f787073f
[gaim-migrate @ 11119]
Calle Englund <notcalle@users.sourceforge.net>
parents:
10096
diff
changeset
|
566 | * XXX - We need a way to only attempt to convert if we KNOW "from" |
|
cdf1f787073f
[gaim-migrate @ 11119]
Calle Englund <notcalle@users.sourceforge.net>
parents:
10096
diff
changeset
|
567 | * can be converted to "charsetstr" |
|
cdf1f787073f
[gaim-migrate @ 11119]
Calle Englund <notcalle@users.sourceforge.net>
parents:
10096
diff
changeset
|
568 | */ |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
569 | *msg = g_convert(from, strlen(from), charsetstr, "UTF-8", NULL, &msglen, NULL); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
570 | if (*msg != NULL) { |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
571 | *charset = AIM_CHARSET_CUSTOM; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
572 | *charsubset = 0x0000; |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
573 | *msglen_int = msglen; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
574 | return; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
575 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
576 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
577 | /* |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
578 | * Nothing else worked, so send as UCS-2BE. |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
579 | */ |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
580 | *msg = g_convert(from, strlen(from), "UCS-2BE", "UTF-8", NULL, &msglen, &err); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
581 | if (*msg != NULL) { |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
582 | *charset = AIM_CHARSET_UNICODE; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
583 | *charsubset = 0x0000; |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
584 | *msglen_int = msglen; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
585 | return; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
586 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
587 | |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
588 | gaim_debug_error("oscar", "Error converting a Unicode message: %s\n", err->message); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
589 | g_error_free(err); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
590 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
591 | gaim_debug_error("oscar", "This should NEVER happen! Sending UTF-8 text flagged as ASCII.\n"); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
592 | *msg = g_strdup(from); |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
593 | *msglen_int = strlen(*msg); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
594 | *charset = AIM_CHARSET_ASCII; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
595 | *charsubset = 0x0000; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
596 | return; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
597 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
598 | |
|
12412
8abe3226695e
[gaim-migrate @ 14719]
Richard Laager <rlaager@pidgin.im>
parents:
12393
diff
changeset
|
599 | static gchar *oscar_caps_to_string(guint caps) |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
600 | { |
|
9407
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
601 | GString *str; |
|
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
602 | gchar *tmp; |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
603 | guint bit = 1; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
604 | |
|
9407
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
605 | str = g_string_new(""); |
|
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
606 | |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
607 | if (!caps) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
608 | return NULL; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
609 | } else while (bit <= AIM_CAPS_LAST) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
610 | if (bit & caps) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
611 | switch (bit) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
612 | case AIM_CAPS_BUDDYICON: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
613 | tmp = _("Buddy Icon"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
614 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
615 | case AIM_CAPS_TALK: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
616 | tmp = _("Voice"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
617 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
618 | case AIM_CAPS_DIRECTIM: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
619 | tmp = _("AIM Direct IM"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
620 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
621 | case AIM_CAPS_CHAT: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
622 | tmp = _("Chat"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
623 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
624 | case AIM_CAPS_GETFILE: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
625 | tmp = _("Get File"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
626 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
627 | case AIM_CAPS_SENDFILE: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
628 | tmp = _("Send File"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
629 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
630 | case AIM_CAPS_GAMES: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
631 | case AIM_CAPS_GAMES2: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
632 | tmp = _("Games"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
633 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
634 | case AIM_CAPS_ADDINS: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
635 | tmp = _("Add-Ins"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
636 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
637 | case AIM_CAPS_SENDBUDDYLIST: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
638 | tmp = _("Send Buddy List"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
639 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
640 | case AIM_CAPS_ICQ_DIRECT: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
641 | tmp = _("ICQ Direct Connect"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
642 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
643 | case AIM_CAPS_APINFO: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
644 | tmp = _("AP User"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
645 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
646 | case AIM_CAPS_ICQRTF: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
647 | tmp = _("ICQ RTF"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
648 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
649 | case AIM_CAPS_EMPTY: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
650 | tmp = _("Nihilist"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
651 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
652 | case AIM_CAPS_ICQSERVERRELAY: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
653 | tmp = _("ICQ Server Relay"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
654 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
655 | case AIM_CAPS_ICQUTF8OLD: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
656 | tmp = _("Old ICQ UTF8"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
657 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
658 | case AIM_CAPS_TRILLIANCRYPT: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
659 | tmp = _("Trillian Encryption"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
660 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
661 | case AIM_CAPS_ICQUTF8: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
662 | tmp = _("ICQ UTF8"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
663 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
664 | case AIM_CAPS_HIPTOP: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
665 | tmp = _("Hiptop"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
666 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
667 | case AIM_CAPS_SECUREIM: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
668 | tmp = _("Security Enabled"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
669 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
670 | case AIM_CAPS_VIDEO: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
671 | tmp = _("Video Chat"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
672 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
673 | /* Not actually sure about this one... WinAIM doesn't show anything */ |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
674 | case AIM_CAPS_ICHATAV: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
675 | tmp = _("iChat AV"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
676 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
677 | case AIM_CAPS_LIVEVIDEO: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
678 | tmp = _("Live Video"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
679 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
680 | case AIM_CAPS_CAMERA: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
681 | tmp = _("Camera"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
682 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
683 | default: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
684 | tmp = NULL; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
685 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
686 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
687 | if (tmp) |
|
9532
32470c5a1d58
[gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
9481
diff
changeset
|
688 | g_string_append_printf(str, "%s%s", (*(str->str) == '\0' ? "" : ", "), tmp); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
689 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
690 | bit <<= 1; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
691 | } |
|
9407
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
692 | |
|
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
693 | return g_string_free(str, FALSE); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
694 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
695 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
696 | static char *oscar_icqstatus(int state) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
697 | /* Make a cute little string that shows the status of the dude or dudet */ |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
698 | if (state & AIM_ICQ_STATE_CHAT) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
699 | return g_strdup_printf(_("Free For Chat")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
700 | else if (state & AIM_ICQ_STATE_DND) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
701 | return g_strdup_printf(_("Do Not Disturb")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
702 | else if (state & AIM_ICQ_STATE_OUT) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
703 | return g_strdup_printf(_("Not Available")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
704 | else if (state & AIM_ICQ_STATE_BUSY) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
705 | return g_strdup_printf(_("Occupied")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
706 | else if (state & AIM_ICQ_STATE_AWAY) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
707 | return g_strdup_printf(_("Away")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
708 | else if (state & AIM_ICQ_STATE_WEBAWARE) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
709 | return g_strdup_printf(_("Web Aware")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
710 | else if (state & AIM_ICQ_STATE_INVISIBLE) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
711 | return g_strdup_printf(_("Invisible")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
712 | else |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
713 | return g_strdup_printf(_("Online")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
714 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
715 | |
|
9973
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
716 | static void |
|
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
717 | oscar_string_append(GString *str, const char *newline, const char *name, const char *value) |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
718 | { |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
719 | gchar *utf8; |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
720 | |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
721 | if (value && value[0] && (utf8 = gaim_utf8_try_convert(value))) { |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
722 | g_string_append_printf(str, "%s<b>%s:</b> %s", newline, name, utf8); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
723 | g_free(utf8); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
724 | } |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
725 | } |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
726 | |
|
9973
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
727 | static void oscar_string_append_info(GaimConnection *gc, GString *str, const char *newline, GaimBuddy *b, aim_userinfo_t *userinfo) |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
728 | { |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
729 | OscarData *od; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
730 | GaimAccount *account; |
|
10517
47d98640b0ad
[gaim-migrate @ 11821]
Daniel Atallah <datallah@pidgin.im>
parents:
10504
diff
changeset
|
731 | GaimPresence *presence = NULL; |
|
47d98640b0ad
[gaim-migrate @ 11821]
Daniel Atallah <datallah@pidgin.im>
parents:
10504
diff
changeset
|
732 | GaimStatus *status = NULL; |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
733 | GaimGroup *g = NULL; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
734 | struct buddyinfo *bi = NULL; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
735 | char *tmp; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
736 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
737 | od = gc->proto_data; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
738 | account = gaim_connection_get_account(gc); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
739 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
740 | if ((str == NULL) || (newline == NULL) || ((b == NULL) && (userinfo == NULL))) |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
741 | return; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
742 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
743 | if (userinfo == NULL) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
744 | userinfo = aim_locate_finduserinfo(od->sess, b->name); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
745 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
746 | if (b == NULL) |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
747 | b = gaim_find_buddy(account, userinfo->sn); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
748 | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
749 | if (b != NULL) { |
| 12088 | 750 | g = gaim_buddy_get_group(b); |
|
10498
aff389ee45f3
[gaim-migrate @ 11790]
Mark Doliner <markdoliner@pidgin.im>
parents:
10487
diff
changeset
|
751 | presence = gaim_buddy_get_presence(b); |
|
aff389ee45f3
[gaim-migrate @ 11790]
Mark Doliner <markdoliner@pidgin.im>
parents:
10487
diff
changeset
|
752 | status = gaim_presence_get_active_status(presence); |
|
aff389ee45f3
[gaim-migrate @ 11790]
Mark Doliner <markdoliner@pidgin.im>
parents:
10487
diff
changeset
|
753 | } |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
754 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
755 | if (userinfo != NULL) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
756 | bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, userinfo->sn)); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
757 | |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
758 | if (b != NULL) { |
|
10498
aff389ee45f3
[gaim-migrate @ 11790]
Mark Doliner <markdoliner@pidgin.im>
parents:
10487
diff
changeset
|
759 | if (gaim_presence_is_online(presence)) { |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
760 | if (aim_sn_is_icq(b->name)) { |
|
11510
8f618fb35bd3
[gaim-migrate @ 13755]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11495
diff
changeset
|
761 | GaimStatus *status = gaim_presence_get_active_status(presence); |
|
8f618fb35bd3
[gaim-migrate @ 13755]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11495
diff
changeset
|
762 | oscar_string_append(str, newline, _("Status"), gaim_status_get_name(status)); |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
763 | } |
|
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
764 | } else { |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
765 | tmp = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name); |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
766 | if (aim_ssi_waitingforauth(od->sess->ssi.local, tmp, b->name)) |
|
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
767 | oscar_string_append(str, newline, _("Status"), _("Not Authorized")); |
|
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
768 | else |
|
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
769 | oscar_string_append(str, newline, _("Status"), _("Offline")); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
770 | } |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
771 | } |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
772 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
773 | if ((bi != NULL) && (bi->ipaddr != 0)) { |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
774 | tmp = g_strdup_printf("%hhu.%hhu.%hhu.%hhu", |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
775 | (bi->ipaddr & 0xff000000) >> 24, |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
776 | (bi->ipaddr & 0x00ff0000) >> 16, |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
777 | (bi->ipaddr & 0x0000ff00) >> 8, |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
778 | (bi->ipaddr & 0x000000ff)); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
779 | oscar_string_append(str, newline, _("IP Address"), tmp); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
780 | g_free(tmp); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
781 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
782 | |
| 11257 | 783 | |
| 784 | if ((userinfo != NULL) && (userinfo->warnlevel != 0)) { | |
|
11285
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
785 | tmp = g_strdup_printf("%d", (int)(userinfo->warnlevel/10.0 + .5)); |
| 11257 | 786 | oscar_string_append(str, newline, _("Warning Level"), tmp); |
| 787 | g_free(tmp); | |
| 788 | } | |
| 789 | ||
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
790 | if ((b != NULL) && (b->name != NULL) && (g != NULL) && (g->name != NULL)) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
791 | tmp = aim_ssi_getcomment(od->sess->ssi.local, g->name, b->name); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
792 | if (tmp != NULL) { |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
793 | char *tmp2 = g_markup_escape_text(tmp, strlen(tmp)); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
794 | g_free(tmp); |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
795 | oscar_string_append(str, newline, _("Buddy Comment"), tmp2); |
|
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
796 | g_free(tmp2); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
797 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
798 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
799 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
800 | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
801 | static char *extract_name(const char *name) { |
| 4121 | 802 | char *tmp, *x; |
| 2086 | 803 | int i, j; |
| 4120 | 804 | |
| 805 | if (!name) | |
| 4121 | 806 | return NULL; |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
807 | |
| 4120 | 808 | x = strchr(name, '-'); |
| 4121 | 809 | |
| 2086 | 810 | if (!x) return NULL; |
| 811 | x = strchr(++x, '-'); | |
| 812 | if (!x) return NULL; | |
| 813 | tmp = g_strdup(++x); | |
| 814 | ||
| 815 | for (i = 0, j = 0; x[i]; i++) { | |
|
2361
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
816 | char hex[3]; |
|
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
817 | if (x[i] != '%') { |
| 2086 | 818 | tmp[j++] = x[i]; |
|
2361
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
819 | continue; |
| 2086 | 820 | } |
|
2361
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
821 | strncpy(hex, x + ++i, 2); hex[2] = 0; |
|
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
822 | i++; |
|
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
823 | tmp[j++] = strtol(hex, NULL, 16); |
| 2086 | 824 | } |
| 825 | ||
| 826 | tmp[j] = 0; | |
| 827 | return tmp; | |
| 828 | } | |
| 829 | ||
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
830 | static struct chat_connection * |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
831 | find_oscar_chat(GaimConnection *gc, int id) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
832 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
833 | OscarData *od = (OscarData *)gc->proto_data; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
834 | GSList *cur; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
835 | struct chat_connection *cc; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
836 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
837 | for (cur = od->oscar_chats; cur != NULL; cur = cur->next) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
838 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
839 | cc = (struct chat_connection *)cur->data; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
840 | if (cc->id == id) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
841 | return cc; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
842 | } |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
843 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
844 | return NULL; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
845 | } |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
846 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
847 | static struct chat_connection * |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
848 | find_oscar_chat_by_conn(GaimConnection *gc, aim_conn_t *conn) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
849 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
850 | OscarData *od = (OscarData *)gc->proto_data; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
851 | GSList *cur; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
852 | struct chat_connection *cc; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
853 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
854 | for (cur = od->oscar_chats; cur != NULL; cur = cur->next) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
855 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
856 | cc = (struct chat_connection *)cur->data; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
857 | if (cc->conn == conn) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
858 | return cc; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
859 | } |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
860 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
861 | return NULL; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
862 | } |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
863 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
864 | static struct chat_connection * |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
865 | find_oscar_chat_by_conv(GaimConnection *gc, GaimConversation *conv) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
866 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
867 | OscarData *od = (OscarData *)gc->proto_data; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
868 | GSList *cur; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
869 | struct chat_connection *cc; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
870 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
871 | for (cur = od->oscar_chats; cur != NULL; cur = cur->next) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
872 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
873 | cc = (struct chat_connection *)cur->data; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
874 | if (cc->conv == conv) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
875 | return cc; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
876 | } |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
877 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
878 | return NULL; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
879 | } |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
880 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
881 | static void |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
882 | oscar_chat_kill(GaimConnection *gc, struct chat_connection *cc) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
883 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
884 | OscarData *od = (OscarData *)gc->proto_data; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
885 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
886 | /* Notify the conversation window that we've left the chat */ |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
887 | serv_got_chat_left(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(cc->conv))); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
888 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
889 | /* Destroy the chat_connection */ |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
890 | od->oscar_chats = g_slist_remove(od->oscar_chats, cc); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
891 | if (cc->inpa > 0) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
892 | gaim_input_remove(cc->inpa); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
893 | aim_conn_kill(od->sess, &cc->conn); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
894 | g_free(cc->name); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
895 | g_free(cc->show); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
896 | g_free(cc); |
| 8219 | 897 | } |
| 898 | ||
| 8971 | 899 | /***************************************************************************** |
| 900 | * Begin scary direct im stuff | |
| 901 | *****************************************************************************/ | |
| 902 | ||
| 903 | static struct oscar_direct_im *oscar_direct_im_find(OscarData *od, const char *who) { | |
| 904 | GSList *d = od->direct_ims; | |
| 905 | struct oscar_direct_im *m = NULL; | |
| 906 | ||
| 907 | while (d) { | |
| 908 | m = (struct oscar_direct_im *)d->data; | |
| 909 | if (!aim_sncmp(who, m->name)) | |
| 910 | return m; | |
| 911 | d = d->next; | |
| 912 | } | |
| 913 | ||
| 914 | return NULL; | |
| 915 | } | |
| 916 | ||
| 917 | static void oscar_direct_im_destroy(OscarData *od, struct oscar_direct_im *dim) | |
| 918 | { | |
| 919 | gaim_debug_info("oscar", | |
| 920 | "destroying Direct IM for %s.\n", dim->name); | |
| 921 | ||
| 922 | od->direct_ims = g_slist_remove(od->direct_ims, dim); | |
| 8978 | 923 | if (dim->gpc_pend) { |
| 924 | dim->killme = TRUE; | |
| 925 | return; | |
| 926 | } | |
| 8971 | 927 | if (dim->watcher) |
| 928 | gaim_input_remove(dim->watcher); | |
| 929 | if (dim->conn) { | |
|
10271
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
930 | aim_conn_close(dim->conn); |
| 8971 | 931 | aim_conn_kill(od->sess, &dim->conn); |
| 932 | } | |
| 933 | g_free(dim); | |
| 934 | } | |
| 935 | ||
| 936 | /* the only difference between this and destroy is this writes a conv message */ | |
| 937 | static void oscar_direct_im_disconnect(OscarData *od, struct oscar_direct_im *dim) | |
| 938 | { | |
| 939 | GaimConversation *conv; | |
| 940 | char buf[256]; | |
| 941 | ||
| 942 | gaim_debug_info("oscar", | |
| 943 | "%s disconnected Direct IM.\n", dim->name); | |
| 944 | ||
| 945 | if (dim->connected) | |
| 946 | g_snprintf(buf, sizeof buf, _("Direct IM with %s closed"), dim->name); | |
| 8978 | 947 | else |
| 8971 | 948 | g_snprintf(buf, sizeof buf, _("Direct IM with %s failed"), dim->name); |
| 949 | ||
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
950 | conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, dim->name, |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
951 | gaim_connection_get_account(dim->gc)); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
952 | |
| 8971 | 953 | if (conv) { |
| 954 | gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL)); | |
| 955 | } else { | |
| 956 | gaim_notify_error(dim->gc, NULL, _("Direct Connect failed"), buf); | |
| 957 | } | |
| 958 | ||
| 959 | oscar_direct_im_destroy(od, dim); | |
| 960 | ||
| 961 | return; | |
| 962 | } | |
| 963 | ||
| 964 | /* oops i made two of these. this one just calls the other one. */ | |
| 965 | static void gaim_odc_disconnect(aim_session_t *sess, aim_conn_t *conn) | |
| 966 | { | |
| 967 | GaimConnection *gc = sess->aux_data; | |
| 968 | OscarData *od = (OscarData *)gc->proto_data; | |
| 969 | struct oscar_direct_im *dim; | |
| 970 | char *sn; | |
| 971 | ||
| 972 | sn = g_strdup(aim_odc_getsn(conn)); | |
| 973 | dim = oscar_direct_im_find(od, sn); | |
| 974 | oscar_direct_im_disconnect(od, dim); | |
| 975 | g_free(sn); | |
| 976 | } | |
| 977 | ||
| 978 | static void destroy_direct_im_request(struct ask_direct *d) { | |
| 979 | gaim_debug_info("oscar", "Freeing DirectIM prompts.\n"); | |
| 980 | ||
| 981 | g_free(d->sn); | |
| 982 | g_free(d); | |
| 983 | } | |
| 984 | ||
| 985 | /* this is just a gaim_proxy_connect cb that sets up the rest of the cbs */ | |
| 986 | static void oscar_odc_callback(gpointer data, gint source, GaimInputCondition condition) { | |
| 987 | struct oscar_direct_im *dim = data; | |
| 988 | GaimConnection *gc = dim->gc; | |
| 989 | OscarData *od = gc->proto_data; | |
| 990 | GaimConversation *conv; | |
| 991 | char buf[256]; | |
| 992 | struct sockaddr name; | |
| 993 | socklen_t name_len = 1; | |
| 994 | ||
| 995 | g_return_if_fail(gc != NULL); | |
| 996 | ||
| 8978 | 997 | dim->gpc_pend = FALSE; |
| 998 | if (dim->killme) { | |
| 999 | oscar_direct_im_destroy(od, dim); | |
| 1000 | return; | |
| 1001 | } | |
| 1002 | ||
| 8971 | 1003 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 1004 | oscar_direct_im_destroy(od, dim); | |
| 1005 | return; | |
| 1006 | } | |
| 1007 | ||
| 1008 | if (source < 0) { | |
| 8984 | 1009 | if (dim->donttryagain) { |
| 1010 | oscar_direct_im_disconnect(od, dim); | |
| 1011 | return; | |
| 1012 | } else { | |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
1013 | guchar cookie[8]; |
| 8984 | 1014 | char *who = g_strdup(dim->name); |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
1015 | const guchar *tmp = aim_odc_getcookie(dim->conn); |
| 8984 | 1016 | |
| 1017 | memcpy(cookie, tmp, 8); | |
| 1018 | oscar_direct_im_destroy(od, dim); | |
| 1019 | oscar_direct_im_initiate(gc, who, cookie); | |
| 1020 | gaim_debug_info("oscar", "asking direct im initiator to connect to us\n"); | |
| 1021 | g_free(who); | |
| 1022 | return; | |
| 1023 | } | |
| 8971 | 1024 | } |
| 1025 | ||
| 1026 | dim->conn->fd = source; | |
| 1027 | aim_conn_completeconnect(od->sess, dim->conn); | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
1028 | conv = gaim_conversation_new(GAIM_CONV_TYPE_IM, dim->gc->account, dim->name); |
| 8971 | 1029 | |
| 1030 | /* This is the best way to see if we're connected or not */ | |
| 8983 | 1031 | /* Is this really needed? */ |
| 8971 | 1032 | if (getpeername(source, &name, &name_len) == 0) { |
| 1033 | g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), dim->name); | |
| 1034 | dim->connected = TRUE; | |
| 1035 | gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL)); | |
| 8983 | 1036 | dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, oscar_callback, dim->conn); |
| 1037 | } else { | |
| 8984 | 1038 | if (dim->donttryagain) { |
| 1039 | oscar_direct_im_disconnect(od, dim); | |
| 1040 | return; | |
| 1041 | } else { | |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
1042 | guchar cookie[8]; |
| 8984 | 1043 | char *who = g_strdup(dim->name); |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
1044 | const guchar *tmp = aim_odc_getcookie(dim->conn); |
| 8984 | 1045 | |
| 1046 | memcpy(cookie, tmp, 8); | |
| 1047 | oscar_direct_im_destroy(od, dim); | |
| 1048 | oscar_direct_im_initiate(gc, who, cookie); | |
| 1049 | gaim_debug_info("oscar", "asking direct im initiator to connect to us\n"); | |
| 1050 | g_free(who); | |
| 1051 | return; | |
| 1052 | } | |
| 8983 | 1053 | } |
| 1054 | ||
| 1055 | ||
| 8971 | 1056 | } |
| 1057 | ||
| 1058 | static void accept_direct_im_request(struct ask_direct *d) { | |
| 1059 | GaimConnection *gc = d->gc; | |
| 1060 | OscarData *od; | |
| 1061 | struct oscar_direct_im *dim; | |
| 1062 | char *host; int port = 5190; | |
| 1063 | int i, rc; | |
| 8982 | 1064 | char *tmp; |
| 1065 | GaimConversation *conv; | |
| 8971 | 1066 | |
| 1067 | if (!g_list_find(gaim_connections_get_all(), gc)) { | |
| 1068 | destroy_direct_im_request(d); | |
| 1069 | return; | |
| 1070 | } | |
| 1071 | ||
| 1072 | od = (OscarData *)gc->proto_data; | |
| 1073 | gaim_debug_info("oscar", "Accepted DirectIM.\n"); | |
| 1074 | ||
| 1075 | dim = oscar_direct_im_find(od, d->sn); | |
| 1076 | if (dim && dim->connected) { | |
| 1077 | destroy_direct_im_request(d); /* 40 */ /* what does that 40 mean? */ | |
| 1078 | gaim_debug_info("oscar", "Wait, we're already connected, ignoring DirectIM.\n"); | |
| 1079 | return; | |
| 1080 | } | |
| 1081 | dim = g_new0(struct oscar_direct_im, 1); | |
| 1082 | dim->gc = d->gc; | |
| 8984 | 1083 | dim->donttryagain = d->donttryagain; |
| 8971 | 1084 | g_snprintf(dim->name, sizeof dim->name, "%s", d->sn); |
| 1085 | ||
| 1086 | dim->conn = aim_odc_connect(od->sess, d->sn, NULL, d->cookie); | |
| 1087 | od->direct_ims = g_slist_append(od->direct_ims, dim); | |
| 1088 | if (!dim->conn) { | |
| 1089 | oscar_direct_im_disconnect(od, dim); | |
| 1090 | destroy_direct_im_request(d); | |
| 1091 | return; | |
| 1092 | } | |
| 1093 | ||
| 1094 | aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING, | |
| 1095 | gaim_odc_incoming, 0); | |
| 1096 | aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING, | |
| 1097 | gaim_odc_typing, 0); | |
| 1098 | aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_IMAGETRANSFER, | |
| 1099 | gaim_odc_update_ui, 0); | |
| 1100 | ||
| 1101 | gaim_debug_info("oscar", "ip is %s.\n", d->ip); | |
| 1102 | for (i = 0; i < (int)strlen(d->ip); i++) { | |
| 1103 | if (d->ip[i] == ':') { | |
| 1104 | port = atoi(&(d->ip[i+1])); | |
| 1105 | break; | |
| 1106 | } | |
| 1107 | } | |
| 1108 | host = g_strndup(d->ip, i); | |
| 1109 | dim->conn->status |= AIM_CONN_STATUS_INPROGRESS; | |
| 8978 | 1110 | dim->gpc_pend = TRUE; |
| 8971 | 1111 | rc = gaim_proxy_connect(gc->account, host, port, oscar_odc_callback, dim); |
| 8982 | 1112 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
1113 | conv = gaim_conversation_new(GAIM_CONV_TYPE_IM, dim->gc->account, d->sn); |
| 8982 | 1114 | tmp = g_strdup_printf(_("Attempting to connect to %s at %s:%hu for Direct IM."), d->sn, host, |
| 1115 | port); | |
| 1116 | gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL)); | |
| 1117 | g_free(tmp); | |
| 8983 | 1118 | |
| 8971 | 1119 | g_free(host); |
| 1120 | if (rc < 0) { | |
| 8978 | 1121 | dim->gpc_pend = FALSE; |
| 8971 | 1122 | oscar_direct_im_disconnect(od, dim); |
| 1123 | destroy_direct_im_request(d); | |
| 1124 | return; | |
| 1125 | } | |
| 1126 | ||
| 1127 | destroy_direct_im_request(d); | |
| 1128 | ||
| 1129 | return; | |
| 1130 | } | |
| 1131 | ||
| 1132 | /* | |
| 1133 | * We have just established a socket with the other dude, so set up some handlers. | |
| 1134 | */ | |
| 1135 | static int gaim_odc_initiate(aim_session_t *sess, aim_frame_t *fr, ...) { | |
| 5575 | 1136 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1137 | OscarData *od = (OscarData *)gc->proto_data; |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
1138 | GaimConversation *conv; |
| 8971 | 1139 | struct oscar_direct_im *dim; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1140 | char buf[256]; |
| 8971 | 1141 | char *sn; |
| 1142 | va_list ap; | |
| 1143 | aim_conn_t *newconn, *listenerconn; | |
| 1144 | ||
| 1145 | va_start(ap, fr); | |
| 1146 | newconn = va_arg(ap, aim_conn_t *); | |
| 1147 | listenerconn = va_arg(ap, aim_conn_t *); | |
| 1148 | va_end(ap); | |
| 1149 | ||
|
10271
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
1150 | aim_conn_close(listenerconn); |
| 8971 | 1151 | aim_conn_kill(sess, &listenerconn); |
| 1152 | ||
| 1153 | sn = g_strdup(aim_odc_getsn(newconn)); | |
| 1154 | ||
| 1155 | gaim_debug_info("oscar", | |
| 1156 | "DirectIM: initiate success to %s\n", sn); | |
| 1157 | dim = oscar_direct_im_find(od, sn); | |
| 1158 | ||
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
1159 | conv = gaim_conversation_new(GAIM_CONV_TYPE_IM, dim->gc->account, sn); |
| 8971 | 1160 | gaim_input_remove(dim->watcher); |
| 1161 | dim->conn = newconn; | |
| 1162 | dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, oscar_callback, dim->conn); | |
| 1163 | dim->connected = TRUE; | |
| 1164 | g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), sn); | |
| 1165 | g_free(sn); | |
| 1166 | gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL)); | |
| 1167 | ||
| 1168 | aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING, gaim_odc_incoming, 0); | |
| 1169 | aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING, gaim_odc_typing, 0); | |
| 1170 | aim_conn_addhandler(sess, newconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_IMAGETRANSFER, gaim_odc_update_ui, 0); | |
| 1171 | ||
| 1172 | return 1; | |
| 1173 | } | |
| 1174 | ||
| 1175 | /* | |
| 1176 | * This is called when each chunk of an image is received. It can be used to | |
| 1177 | * update a progress bar, or to eat lots of dry cat food. Wet cat food is | |
| 1178 | * nasty, you sicko. | |
| 1179 | */ | |
| 1180 | static int gaim_odc_update_ui(aim_session_t *sess, aim_frame_t *fr, ...) { | |
| 1181 | va_list ap; | |
| 1182 | char *sn; | |
| 1183 | double percent; | |
| 1184 | GaimConnection *gc = sess->aux_data; | |
| 1185 | OscarData *od = (OscarData *)gc->proto_data; | |
| 1186 | struct oscar_direct_im *dim; | |
| 1187 | ||
| 1188 | va_start(ap, fr); | |
| 1189 | sn = va_arg(ap, char *); | |
| 1190 | percent = va_arg(ap, double); | |
| 1191 | va_end(ap); | |
| 1192 | ||
| 1193 | if (!sn || !(dim = oscar_direct_im_find(od, sn))) | |
| 1194 | return 1; | |
| 1195 | if (dim->watcher) { | |
| 1196 | gaim_input_remove(dim->watcher); /* Otherwise, the callback will callback */ | |
| 1197 | /* The callback will callback? I don't get how that would happen here. */ | |
| 1198 | dim->watcher = 0; | |
| 1199 | } | |
| 1200 | ||
| 1201 | dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, | |
| 1202 | oscar_callback, dim->conn); | |
| 1203 | ||
| 1204 | return 1; | |
| 1205 | } | |
| 1206 | ||
| 1207 | /* | |
| 1208 | * This is called after a direct IM has been received in its entirety. This | |
| 1209 | * function is passed a long chunk of data which contains the IM with any | |
| 1210 | * data chunks (images) appended to it. | |
| 1211 | * | |
| 1212 | * This function rips out all the data chunks and creates an imgstore for | |
| 1213 | * each one. In order to do this, it first goes through the IM and takes | |
| 1214 | * out all the IMG tags. When doing so, it rewrites the original IMG tag | |
| 1215 | * with one compatible with the imgstore Gaim core code. For each one, we | |
| 1216 | * then read in chunks of data from the end of the message and actually | |
| 1217 | * create the img store using the given data. | |
| 1218 | * | |
| 1219 | * For somewhat easy reference, here's a sample message | |
| 1220 | * (without the whitespace and asterisks): | |
| 1221 | * | |
| 1222 | * <HTML><BODY BGCOLOR="#ffffff"> | |
| 1223 | * <FONT LANG="0"> | |
| 1224 | * This is a really stupid picture:<BR> | |
| 1225 | * <IMG SRC="Sample.jpg" ID="1" WIDTH="283" HEIGHT="212" DATASIZE="9894"><BR> | |
| 1226 | * Yeah it is<BR> | |
| 1227 | * Here is another one:<BR> | |
| 1228 | * <IMG SRC="Soap Bubbles.bmp" ID="2" WIDTH="256" HEIGHT="256" DATASIZE="65978"> | |
| 1229 | * </FONT> | |
| 1230 | * </BODY></HTML> | |
| 1231 | * <BINARY> | |
| 1232 | * <DATA ID="1" SIZE="9894">datadatadatadata</DATA> | |
| 1233 | * <DATA ID="2" SIZE="65978">datadatadatadata</DATA> | |
| 1234 | * </BINARY> | |
| 1235 | */ | |
| 1236 | static int gaim_odc_incoming(aim_session_t *sess, aim_frame_t *fr, ...) { | |
| 1237 | GaimConnection *gc = sess->aux_data; | |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12189
diff
changeset
|
1238 | GaimMessageFlags imflags = 0; |
| 8971 | 1239 | gchar *utf8; |
| 1240 | GString *newmsg = g_string_new(""); | |
| 1241 | GSList *images = NULL; | |
| 1242 | va_list ap; | |
| 1243 | const char *sn, *msg, *msgend, *binary; | |
| 1244 | size_t len; | |
| 1245 | int encoding, isawaymsg; | |
| 1246 | ||
| 1247 | va_start(ap, fr); | |
| 1248 | sn = va_arg(ap, const char *); | |
| 1249 | msg = va_arg(ap, const char *); | |
| 1250 | len = va_arg(ap, size_t); | |
| 1251 | encoding = va_arg(ap, int); | |
| 1252 | isawaymsg = va_arg(ap, int); | |
| 1253 | va_end(ap); | |
| 1254 | msgend = msg + len; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1255 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1256 | gaim_debug_info("oscar", |
| 8971 | 1257 | "Got DirectIM message from %s\n", sn); |
| 1258 | ||
| 1259 | if (isawaymsg) | |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12189
diff
changeset
|
1260 | imflags |= GAIM_MESSAGE_AUTO_RESP; |
| 8971 | 1261 | |
| 1262 | /* message has a binary trailer */ | |
| 1263 | if ((binary = gaim_strcasestr(msg, "<binary>"))) { | |
| 1264 | GData *attribs; | |
| 1265 | const char *tmp, *start, *end, *last = NULL; | |
| 1266 | ||
| 1267 | tmp = msg; | |
| 1268 | ||
| 1269 | /* for each valid image tag... */ | |
| 1270 | while (gaim_markup_find_tag("img", tmp, &start, &end, &attribs)) { | |
| 1271 | const char *id, *src, *datasize; | |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10498
diff
changeset
|
1272 | const char *data = NULL; |
|
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10498
diff
changeset
|
1273 | char *tag = NULL; |
| 8971 | 1274 | size_t size; |
| 1275 | int imgid = 0; | |
| 1276 | ||
| 1277 | /* update the location of the last img tag */ | |
| 1278 | last = end; | |
| 1279 | ||
| 1280 | /* grab attributes */ | |
| 1281 | id = g_datalist_get_data(&attribs, "id"); | |
| 1282 | src = g_datalist_get_data(&attribs, "src"); | |
| 1283 | datasize = g_datalist_get_data(&attribs, "datasize"); | |
| 1284 | ||
| 1285 | /* if we have id & datasize, build the data tag */ | |
| 1286 | if (id && datasize) | |
| 1287 | tag = g_strdup_printf("<data id=\"%s\" size=\"%s\">", id, datasize); | |
| 1288 | ||
| 1289 | /* if we have a tag, find the start of the data */ | |
| 1290 | if (tag && (data = gaim_strcasestr(binary, tag))) | |
| 1291 | data += strlen(tag); | |
| 1292 | ||
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10498
diff
changeset
|
1293 | g_free(tag); |
|
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10498
diff
changeset
|
1294 | |
| 8971 | 1295 | /* check the data is here and store it */ |
| 1296 | if (data + (size = atoi(datasize)) <= msgend) | |
| 1297 | imgid = gaim_imgstore_add(data, size, src); | |
| 1298 | ||
| 1299 | /* | |
| 1300 | * XXX - The code below contains some calls to oscar_encoding_to_utf8 | |
| 1301 | * The hardcoded "us-ascii" value REALLY needs to be removed. | |
| 1302 | */ | |
| 1303 | /* if we have a stored image... */ | |
| 1304 | if (imgid) { | |
| 1305 | /* append the message up to the tag */ | |
| 1306 | utf8 = oscar_encoding_to_utf8("us-ascii", tmp, start - tmp); | |
| 1307 | if (utf8 != NULL) { | |
| 1308 | newmsg = g_string_append(newmsg, utf8); | |
| 1309 | g_free(utf8); | |
| 1310 | } | |
| 1311 | ||
| 1312 | /* write the new image tag */ | |
| 1313 | g_string_append_printf(newmsg, "<IMG ID=\"%d\">", imgid); | |
| 1314 | ||
| 1315 | /* and record the image number */ | |
| 1316 | images = g_slist_append(images, GINT_TO_POINTER(imgid)); | |
| 1317 | } else { | |
| 1318 | /* otherwise, copy up to the end of the tag */ | |
| 1319 | utf8 = oscar_encoding_to_utf8("us-ascii", tmp, (end + 1) - tmp); | |
| 1320 | if (utf8 != NULL) { | |
| 1321 | newmsg = g_string_append(newmsg, utf8); | |
| 1322 | g_free(utf8); | |
| 1323 | } | |
| 1324 | } | |
| 1325 | ||
| 1326 | /* clear the attribute list */ | |
| 1327 | g_datalist_clear(&attribs); | |
| 1328 | ||
| 1329 | /* continue from the end of the tag */ | |
| 1330 | tmp = end + 1; | |
| 1331 | } | |
| 1332 | ||
| 1333 | /* append any remaining message data (without the > :-) */ | |
| 1334 | if (last++ && (last < binary)) | |
| 1335 | newmsg = g_string_append_len(newmsg, last, binary - last); | |
| 1336 | ||
| 1337 | /* set the flag if we caught any images */ | |
| 1338 | if (images) | |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12189
diff
changeset
|
1339 | imflags |= GAIM_MESSAGE_IMAGES; |
| 8971 | 1340 | } else { |
| 1341 | g_string_append_len(newmsg, msg, len); | |
| 1342 | } | |
| 1343 | ||
|
10318
e445c737bdeb
[gaim-migrate @ 11520]
Mark Doliner <markdoliner@pidgin.im>
parents:
10271
diff
changeset
|
1344 | /* Convert to UTF8 */ |
|
e445c737bdeb
[gaim-migrate @ 11520]
Mark Doliner <markdoliner@pidgin.im>
parents:
10271
diff
changeset
|
1345 | /* (This hasn't been tested very much) */ |
|
e445c737bdeb
[gaim-migrate @ 11520]
Mark Doliner <markdoliner@pidgin.im>
parents:
10271
diff
changeset
|
1346 | utf8 = gaim_plugin_oscar_decode_im_part(gc->account, sn, encoding, 0x0000, newmsg->str, len); |
|
e445c737bdeb
[gaim-migrate @ 11520]
Mark Doliner <markdoliner@pidgin.im>
parents:
10271
diff
changeset
|
1347 | if (utf8 != NULL) { |
|
e445c737bdeb
[gaim-migrate @ 11520]
Mark Doliner <markdoliner@pidgin.im>
parents:
10271
diff
changeset
|
1348 | serv_got_im(gc, sn, utf8, imflags, time(NULL)); |
|
e445c737bdeb
[gaim-migrate @ 11520]
Mark Doliner <markdoliner@pidgin.im>
parents:
10271
diff
changeset
|
1349 | g_free(utf8); |
|
e445c737bdeb
[gaim-migrate @ 11520]
Mark Doliner <markdoliner@pidgin.im>
parents:
10271
diff
changeset
|
1350 | } |
|
e445c737bdeb
[gaim-migrate @ 11520]
Mark Doliner <markdoliner@pidgin.im>
parents:
10271
diff
changeset
|
1351 | |
|
e445c737bdeb
[gaim-migrate @ 11520]
Mark Doliner <markdoliner@pidgin.im>
parents:
10271
diff
changeset
|
1352 | /* free the message */ |
| 8971 | 1353 | g_string_free(newmsg, TRUE); |
| 1354 | ||
| 1355 | /* unref any images we allocated */ | |
| 1356 | if (images) { | |
| 1357 | GSList *tmp; | |
| 1358 | int id; | |
| 1359 | ||
| 1360 | for (tmp = images; tmp != NULL; tmp = tmp->next) { | |
| 1361 | id = GPOINTER_TO_INT(tmp->data); | |
| 1362 | gaim_imgstore_unref(id); | |
| 1363 | } | |
| 1364 | ||
| 1365 | g_slist_free(images); | |
| 1366 | } | |
| 1367 | ||
| 1368 | return 1; | |
| 1369 | } | |
| 1370 | ||
| 1371 | static int gaim_odc_typing(aim_session_t *sess, aim_frame_t *fr, ...) { | |
| 1372 | va_list ap; | |
| 1373 | char *sn; | |
| 1374 | int typing; | |
| 1375 | GaimConnection *gc = sess->aux_data; | |
| 1376 | ||
| 1377 | va_start(ap, fr); | |
| 1378 | sn = va_arg(ap, char *); | |
| 1379 | typing = va_arg(ap, int); | |
| 1380 | va_end(ap); | |
| 1381 | ||
| 1382 | if (typing == 0x0002) { | |
| 1383 | /* I had to leave this. It's just too funny. It reminds me of my sister. */ | |
| 1384 | gaim_debug_info("oscar", | |
| 1385 | "ohmigod! %s has started typing (DirectIM). He's going to send you a message! *squeal*\n", sn); | |
| 1386 | serv_got_typing(gc, sn, 0, GAIM_TYPING); | |
| 1387 | } else if (typing == 0x0001) | |
| 1388 | serv_got_typing(gc, sn, 0, GAIM_TYPED); | |
| 1389 | else | |
| 1390 | serv_got_typing_stopped(gc, sn); | |
| 1391 | return 1; | |
| 1392 | } | |
| 1393 | ||
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12189
diff
changeset
|
1394 | static int gaim_odc_send_im(aim_session_t *sess, aim_conn_t *conn, const char *message, GaimMessageFlags imflags) { |
| 8971 | 1395 | char *buf; |
| 1396 | size_t len; | |
| 1397 | int ret; | |
| 1398 | GString *msg = g_string_new("<HTML><BODY>"); | |
| 1399 | GString *data = g_string_new("</BODY></HTML><BINARY>"); | |
| 1400 | GData *attribs; | |
| 1401 | const char *start, *end, *last; | |
| 1402 | int oscar_id = 0; | |
| 1403 | ||
| 1404 | last = message; | |
| 1405 | ||
| 1406 | /* for each valid IMG tag... */ | |
| 1407 | while (last && *last && gaim_markup_find_tag("img", last, &start, &end, &attribs)) { | |
| 1408 | GaimStoredImage *image = NULL; | |
| 1409 | const char *id; | |
| 1410 | ||
| 1411 | if (start - last) { | |
| 1412 | g_string_append_len(msg, last, start - last); | |
| 1413 | } | |
| 1414 | ||
| 1415 | id = g_datalist_get_data(&attribs, "id"); | |
| 1416 | ||
| 1417 | /* ... if it refers to a valid gaim image ... */ | |
| 1418 | if (id && (image = gaim_imgstore_get(atoi(id)))) { | |
| 1419 | /* ... append the message from start to the tag ... */ | |
|
9126
b95adbd031d5
[gaim-migrate @ 9903]
Mark Doliner <markdoliner@pidgin.im>
parents:
9070
diff
changeset
|
1420 | unsigned long size = gaim_imgstore_get_size(image); |
| 8971 | 1421 | const char *filename = gaim_imgstore_get_filename(image); |
| 1422 | gpointer imgdata = gaim_imgstore_get_data(image); | |
| 1423 | ||
| 1424 | oscar_id++; | |
| 1425 | ||
| 1426 | /* ... insert a new img tag with the oscar id ... */ | |
| 1427 | if (filename) | |
| 1428 | g_string_append_printf(msg, | |
|
9126
b95adbd031d5
[gaim-migrate @ 9903]
Mark Doliner <markdoliner@pidgin.im>
parents:
9070
diff
changeset
|
1429 | "<IMG SRC=\"%s\" ID=\"%d\" DATASIZE=\"%lu\">", |
| 8971 | 1430 | filename, oscar_id, size); |
| 1431 | else | |
| 1432 | g_string_append_printf(msg, | |
|
9126
b95adbd031d5
[gaim-migrate @ 9903]
Mark Doliner <markdoliner@pidgin.im>
parents:
9070
diff
changeset
|
1433 | "<IMG ID=\"%d\" DATASIZE=\"%lu\">", |
| 8971 | 1434 | oscar_id, size); |
| 1435 | ||
| 1436 | /* ... and append the data to the binary section ... */ | |
|
9126
b95adbd031d5
[gaim-migrate @ 9903]
Mark Doliner <markdoliner@pidgin.im>
parents:
9070
diff
changeset
|
1437 | g_string_append_printf(data, "<DATA ID=\"%d\" SIZE=\"%lu\">", |
| 8971 | 1438 | oscar_id, size); |
| 1439 | data = g_string_append_len(data, imgdata, size); | |
| 1440 | data = g_string_append(data, "</DATA>"); | |
| 1441 | } | |
| 1442 | /* If the tag is invalid, skip it, thus no else here */ | |
| 1443 | ||
| 1444 | g_datalist_clear(&attribs); | |
| 1445 | ||
| 1446 | /* continue from the end of the tag */ | |
| 1447 | last = end + 1; | |
| 1448 | } | |
| 1449 | ||
| 1450 | /* append any remaining message data (without the > :-) */ | |
| 1451 | if (last && *last) | |
| 1452 | msg = g_string_append(msg, last); | |
| 1453 | ||
| 1454 | /* if we inserted any images in the binary section, append it */ | |
| 1455 | if (oscar_id) { | |
| 1456 | msg = g_string_append_len(msg, data->str, data->len); | |
| 1457 | msg = g_string_append(msg, "</BINARY>"); | |
| 1458 | } | |
| 1459 | ||
| 1460 | len = msg->len; | |
| 1461 | buf = msg->str; | |
| 1462 | g_string_free(msg, FALSE); | |
| 1463 | g_string_free(data, TRUE); | |
| 1464 | ||
| 1465 | ||
| 1466 | /* XXX - The last parameter below is the encoding. Let Paco-Paco do something with it. */ | |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12189
diff
changeset
|
1467 | if (imflags & GAIM_MESSAGE_AUTO_RESP) |
| 8971 | 1468 | ret = aim_odc_send_im(sess, conn, buf, len, 0, 1); |
| 1469 | else | |
| 1470 | ret = aim_odc_send_im(sess, conn, buf, len, 0, 0); | |
| 1471 | ||
| 1472 | g_free(buf); | |
| 1473 | ||
| 1474 | return ret; | |
| 1475 | } | |
| 1476 | ||
| 1477 | struct ask_do_dir_im { | |
| 1478 | char *who; | |
| 1479 | GaimConnection *gc; | |
| 1480 | }; | |
| 1481 | ||
| 1482 | static void oscar_cancel_direct_im(struct ask_do_dir_im *data) { | |
| 1483 | g_free(data->who); | |
| 1484 | g_free(data); | |
| 1485 | } | |
| 1486 | ||
| 8983 | 1487 | /* this function is used to initiate a direct im session with someone. |
| 1488 | * we start listening on a port and send a request. they either connect | |
| 1489 | * or send some kind of reply. If they can't connect, they ask us to | |
| 1490 | * connect to them, and so we do that. | |
| 1491 | * | |
| 1492 | * this function will also get called if the other side initiate's a direct | |
| 1493 | * im and we try to connect and fail. in that case cookie will not be null. | |
| 1494 | * | |
| 1495 | * note that cookie is an 8 byte string that isn't NULL terminated | |
| 1496 | */ | |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
1497 | static void oscar_direct_im_initiate(GaimConnection *gc, const char *who, const guchar *cookie) { |
| 8971 | 1498 | OscarData *od; |
| 1499 | struct oscar_direct_im *dim; | |
| 1500 | int listenfd; | |
| 8982 | 1501 | const char *ip; |
| 8971 | 1502 | |
| 1503 | od = (OscarData *)gc->proto_data; | |
| 1504 | ||
| 8983 | 1505 | dim = oscar_direct_im_find(od, who); |
| 8971 | 1506 | if (dim) { |
| 1507 | if (!(dim->connected)) { /* We'll free the old, unconnected dim, and start over */ | |
| 1508 | oscar_direct_im_disconnect(od, dim); | |
| 1509 | gaim_debug_info("oscar", | |
| 1510 | "Gave up on old direct IM, trying again\n"); | |
| 1511 | } else { | |
| 1512 | gaim_notify_error(gc, NULL, "DirectIM already open.", NULL); | |
| 8980 | 1513 | return; |
| 8971 | 1514 | } |
| 1515 | } | |
| 1516 | dim = g_new0(struct oscar_direct_im, 1); | |
| 1517 | dim->gc = gc; | |
| 8983 | 1518 | g_snprintf(dim->name, sizeof dim->name, "%s", who); |
| 8971 | 1519 | |
| 1520 | listenfd = gaim_network_listen_range(5190, 5199); | |
| 8982 | 1521 | ip = gaim_network_get_my_ip(od->conn ? od->conn->fd : -1); |
| 9455 | 1522 | if (listenfd >= 0) |
| 1523 | dim->conn = aim_odc_initiate(od->sess, who, listenfd, gaim_network_ip_atoi(ip), gaim_network_get_port_from_fd(listenfd), cookie); | |
| 8971 | 1524 | if (dim->conn != NULL) { |
| 8982 | 1525 | char *tmp; |
| 1526 | GaimConversation *conv; | |
| 1527 | ||
| 8971 | 1528 | od->direct_ims = g_slist_append(od->direct_ims, dim); |
| 1529 | dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, | |
| 1530 | oscar_callback, dim->conn); | |
| 1531 | aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIM_ESTABLISHED, | |
| 1532 | gaim_odc_initiate, 0); | |
| 8982 | 1533 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
1534 | conv = gaim_conversation_new(GAIM_CONV_TYPE_IM, dim->gc->account, who); |
| 8983 | 1535 | tmp = g_strdup_printf(_("Asking %s to connect to us at %s:%hu for Direct IM."), who, ip, |
| 8982 | 1536 | gaim_network_get_port_from_fd(listenfd)); |
| 1537 | gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL)); | |
| 1538 | g_free(tmp); | |
| 8971 | 1539 | } else { |
| 1540 | gaim_notify_error(gc, NULL, _("Unable to open Direct IM"), NULL); | |
| 1541 | oscar_direct_im_destroy(od, dim); | |
| 1542 | } | |
| 8983 | 1543 | } |
| 1544 | ||
| 1545 | static void oscar_direct_im(struct ask_do_dir_im *data) { | |
| 1546 | GaimConnection *gc = data->gc; | |
| 1547 | ||
| 1548 | if (!g_list_find(gaim_connections_get_all(), gc)) { | |
| 1549 | g_free(data->who); | |
| 1550 | g_free(data); | |
| 1551 | return; | |
| 1552 | } | |
| 1553 | ||
| 1554 | oscar_direct_im_initiate(gc, data->who, NULL); | |
| 8971 | 1555 | g_free(data->who); |
| 1556 | g_free(data); | |
| 1557 | } | |
| 1558 | ||
| 1559 | /* this is the right click menu cb thingy */ | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1560 | static void oscar_ask_direct_im(GaimBlistNode *node, gpointer ignored) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1561 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1562 | GaimBuddy *buddy; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1563 | GaimConnection *gc; |
| 8971 | 1564 | gchar *buf; |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1565 | struct ask_do_dir_im *data; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1566 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1567 | g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node)); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1568 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1569 | buddy = (GaimBuddy *) node; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1570 | gc = gaim_account_get_connection(buddy->account); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1571 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1572 | data = g_new0(struct ask_do_dir_im, 1); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1573 | data->who = g_strdup(buddy->name); |
| 8971 | 1574 | data->gc = gc; |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1575 | buf = g_strdup_printf(_("You have selected to open a Direct IM connection with %s."), |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1576 | buddy->name); |
| 8971 | 1577 | |
| 1578 | gaim_request_action(gc, NULL, buf, | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1579 | _("Because this reveals your IP address, it " |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
1580 | "may be considered a privacy risk. Do you " |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1581 | "wish to continue?"), |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1582 | 0, data, 2, |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1583 | _("Connect"), G_CALLBACK(oscar_direct_im), |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1584 | _("Cancel"), G_CALLBACK(oscar_cancel_direct_im)); |
| 8971 | 1585 | g_free(buf); |
| 1586 | } | |
| 1587 | ||
| 1588 | /***************************************************************************** | |
| 1589 | * End scary direct im stuff | |
| 1590 | *****************************************************************************/ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1591 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1592 | static void oscar_callback(gpointer data, gint source, GaimInputCondition condition) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1593 | aim_conn_t *conn = (aim_conn_t *)data; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1594 | aim_session_t *sess = aim_conn_getsess(conn); |
| 5575 | 1595 | GaimConnection *gc = sess ? sess->aux_data : NULL; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1596 | OscarData *od; |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1597 | |
| 2086 | 1598 | if (!gc) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1599 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1600 | "oscar callback for closed connection (1).\n"); |
| 2086 | 1601 | return; |
| 1602 | } | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1603 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1604 | if( !(od = (OscarData *)gc->proto_data) ) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1605 | gaim_debug_warning("oscar","NULL od in oscar_callback; conn closed?\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1606 | return; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1607 | } |
| 2086 | 1608 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
1609 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 1610 | /* oh boy. this is probably bad. i guess the only thing we |
| 1611 | * can really do is return? */ | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1612 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1613 | "oscar callback for closed connection (2).\n"); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1614 | gaim_debug_misc("oscar", "gc = %p\n", gc); |
| 2086 | 1615 | return; |
| 1616 | } | |
| 1617 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1618 | if (condition & GAIM_INPUT_READ) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1619 | if (conn->type == AIM_CONN_TYPE_LISTENER) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1620 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1621 | "got information on rendezvous listener\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1622 | if (aim_handlerendconnect(od->sess, conn) < 0) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1623 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1624 | "connection error (rendezvous listener)\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1625 | aim_conn_kill(od->sess, &conn); |
| 8446 | 1626 | /* AAA - Don't we need to gaim_xfer_cancel here? --marv */ |
| 2086 | 1627 | } |
| 1628 | } else { | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1629 | if (aim_get_command(od->sess, conn) >= 0) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1630 | aim_rxdispatch(od->sess); |
|
6029
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
1631 | if (od->killme) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1632 | gaim_debug_error("oscar", "Waiting to be destroyed\n"); |
|
6029
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
1633 | return; |
|
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
1634 | } |
| 2086 | 1635 | } else { |
| 1636 | if ((conn->type == AIM_CONN_TYPE_BOS) || | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1637 | !(aim_getconn_type(od->sess, AIM_CONN_TYPE_BOS))) |
|
10444
ea10e6d92619
[gaim-migrate @ 11704]
Mark Doliner <markdoliner@pidgin.im>
parents:
10439
diff
changeset
|
1638 | { |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
1639 | gaim_debug_error("oscar", "Major connection error. i.e. " |
|
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
1640 | "invalid data was received on the oscar TCP stream\n"); |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1641 | gaim_connection_error(gc, _("Disconnected.")); |
| 2086 | 1642 | } else if (conn->type == AIM_CONN_TYPE_CHAT) { |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
1643 | struct chat_connection *cc = find_oscar_chat_by_conn(gc, conn); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
1644 | GaimConversation *conv = gaim_find_chat(gc, cc->id); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
1645 | char *buf; |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
1646 | gaim_debug_info("oscar", "Lost connection " |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
1647 | "to chat room %s\n", cc->name); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
1648 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
1649 | buf = g_strdup_printf(_("You have lost your connection " |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
1650 | "to chat room %s."), cc->name); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
1651 | if (conv != NULL) |
| 9627 | 1652 | gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_ERROR, time(NULL)); |
| 1653 | else | |
| 1654 | gaim_notify_error(gc, NULL, buf, NULL); | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
1655 | g_free(buf); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1656 | |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
1657 | oscar_chat_kill(gc, cc); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1658 | |
| 2086 | 1659 | } else if (conn->type == AIM_CONN_TYPE_CHATNAV) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1660 | if (od->cnpa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1661 | gaim_input_remove(od->cnpa); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1662 | od->cnpa = 0; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1663 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1664 | "removing chatnav input watcher\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1665 | while (od->create_rooms) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1666 | struct create_room *cr = od->create_rooms->data; |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1667 | g_free(cr->name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1668 | od->create_rooms = |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1669 | g_slist_remove(od->create_rooms, cr); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1670 | g_free(cr); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1671 | gaim_notify_error(gc, NULL, |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1672 | _("Chat is currently unavailable"), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1673 | NULL); |
| 2086 | 1674 | } |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1675 | gaim_debug_info("oscar","killing rendezvous connection\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1676 | aim_conn_kill(od->sess, &conn); |
| 2086 | 1677 | } else if (conn->type == AIM_CONN_TYPE_AUTH) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1678 | if (od->paspa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1679 | gaim_input_remove(od->paspa); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1680 | od->paspa = 0; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1681 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1682 | "removing authconn input watcher\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1683 | aim_conn_kill(od->sess, &conn); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1684 | } else if (conn->type == AIM_CONN_TYPE_EMAIL) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1685 | if (od->emlpa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1686 | gaim_input_remove(od->emlpa); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1687 | od->emlpa = 0; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1688 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1689 | "removing email input watcher\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1690 | aim_conn_kill(od->sess, &conn); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1691 | } else if (conn->type == AIM_CONN_TYPE_ICON) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1692 | if (od->icopa > 0) |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1693 | gaim_input_remove(od->icopa); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1694 | od->icopa = 0; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1695 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1696 | "removing icon input watcher\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1697 | aim_conn_kill(od->sess, &conn); |
| 2086 | 1698 | } else if (conn->type == AIM_CONN_TYPE_RENDEZVOUS) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1699 | if (conn->subtype == AIM_CONN_SUBTYPE_OFT_DIRECTIM) |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1700 | gaim_odc_disconnect(od->sess, conn); |
|
11214
253372056e12
[gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11185
diff
changeset
|
1701 | gaim_debug_info("oscar","killing rendezvous connection\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1702 | aim_conn_kill(od->sess, &conn); |
| 2086 | 1703 | } else { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1704 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1705 | "holy crap! generic connection error! %hu\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1706 | conn->type); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1707 | aim_conn_kill(od->sess, &conn); |
| 2086 | 1708 | } |
| 1709 | } | |
| 1710 | } | |
| 1711 | } | |
| 1712 | } | |
| 1713 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1714 | static void oscar_login_connect(gpointer data, gint source, GaimInputCondition cond) |
| 2086 | 1715 | { |
| 5575 | 1716 | GaimConnection *gc = data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1717 | OscarData *od; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1718 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1719 | aim_conn_t *conn; |
| 2086 | 1720 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
1721 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 1722 | close(source); |
| 1723 | return; | |
| 1724 | } | |
| 1725 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1726 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1727 | sess = od->sess; |
| 2086 | 1728 | 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
|
1729 | conn->fd = source; |
| 2086 | 1730 | |
| 1731 | if (source < 0) { | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1732 | gaim_connection_error(gc, _("Couldn't connect to host")); |
| 2086 | 1733 | return; |
| 1734 | } | |
| 1735 | ||
| 1736 | aim_conn_completeconnect(sess, conn); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1737 | gc->inpa = gaim_input_add(conn->fd, GAIM_INPUT_READ, oscar_callback, conn); |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1738 | aim_request_login(sess, conn, gaim_account_get_username(gaim_connection_get_account(gc))); |
|
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1739 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1740 | gaim_debug_info("oscar", |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1741 | "Screen name sent, waiting for response\n"); |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1742 | gaim_connection_update_progress(gc, _("Screen name sent"), 1, OSCAR_CONNECT_STEPS); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1743 | ck[1] = 0x65; |
| 2086 | 1744 | } |
| 1745 | ||
|
10444
ea10e6d92619
[gaim-migrate @ 11704]
Mark Doliner <markdoliner@pidgin.im>
parents:
10439
diff
changeset
|
1746 | static void |
|
11837
2f1206084fef
[gaim-migrate @ 14128]
Mark Doliner <markdoliner@pidgin.im>
parents:
11820
diff
changeset
|
1747 | oscar_login(GaimAccount *account) |
|
10444
ea10e6d92619
[gaim-migrate @ 11704]
Mark Doliner <markdoliner@pidgin.im>
parents:
10439
diff
changeset
|
1748 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1749 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1750 | aim_conn_t *conn; |
| 5575 | 1751 | GaimConnection *gc = gaim_account_get_connection(account); |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1752 | OscarData *od = gc->proto_data = g_new0(OscarData, 1); |
| 2086 | 1753 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1754 | gaim_debug_misc("oscar", "oscar_login: gc = %p\n", gc); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
1755 | |
| 8437 | 1756 | if (!aim_snvalid(gaim_account_get_username(account))) { |
| 1757 | gchar *buf; | |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
1758 | buf = g_strdup_printf(_("Unable to login: Could not sign on as %s because the screen name is invalid. Screen names must either start with a letter and contain only letters, numbers and spaces, or contain only numbers."), gaim_account_get_username(account)); |
| 8437 | 1759 | gaim_connection_error(gc, buf); |
| 1760 | g_free(buf); | |
| 1761 | } | |
| 1762 | ||
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
1763 | if (aim_sn_is_icq((gaim_account_get_username(account)))) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1764 | od->icq = TRUE; |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
1765 | } else { |
|
6622
277eb0b14653
[gaim-migrate @ 7146]
Robert McQueen <robot101@debian.org>
parents:
6621
diff
changeset
|
1766 | gc->flags |= GAIM_CONNECTION_HTML; |
|
277eb0b14653
[gaim-migrate @ 7146]
Robert McQueen <robot101@debian.org>
parents:
6621
diff
changeset
|
1767 | gc->flags |= GAIM_CONNECTION_AUTO_RESP; |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
1768 | } |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
1769 | od->buddyinfo = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, oscar_free_buddyinfo); |
| 2086 | 1770 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1771 | sess = g_new0(aim_session_t, 1); |
|
11253
81cbd43ef85e
[gaim-migrate @ 13422]
Mark Doliner <markdoliner@pidgin.im>
parents:
11251
diff
changeset
|
1772 | aim_session_init(sess, TRUE); |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1773 | /* |
|
11837
2f1206084fef
[gaim-migrate @ 14128]
Mark Doliner <markdoliner@pidgin.im>
parents:
11820
diff
changeset
|
1774 | * We need an immediate queue because we don't use a while-loop |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1775 | * to see if things need to be sent. |
|
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1776 | */ |
| 2086 | 1777 | aim_tx_setenqueue(sess, AIM_TX_IMMEDIATE, NULL); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1778 | od->sess = sess; |
| 2086 | 1779 | sess->aux_data = gc; |
| 1780 | ||
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
1781 | /* Connect to core Gaim signals */ |
|
10087
e5b80a38939d
[gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10042
diff
changeset
|
1782 | gaim_prefs_connect_callback(gc, "/plugins/prpl/oscar/recent_buddies", recent_buddies_cb, gc); |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
1783 | |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11159
diff
changeset
|
1784 | conn = aim_newconn(sess, AIM_CONN_TYPE_AUTH); |
| 2086 | 1785 | if (conn == NULL) { |
|
10444
ea10e6d92619
[gaim-migrate @ 11704]
Mark Doliner <markdoliner@pidgin.im>
parents:
10439
diff
changeset
|
1786 | gaim_debug_error("oscar", "internal connection error\n"); |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1787 | gaim_connection_error(gc, _("Unable to login to AIM")); |
| 2086 | 1788 | return; |
| 1789 | } | |
| 1790 | ||
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
1791 | aim_conn_addhandler(sess, conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1792 | aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0); |
| 2086 | 1793 | aim_conn_addhandler(sess, conn, 0x0017, 0x0007, gaim_parse_login, 0); |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1794 | aim_conn_addhandler(sess, conn, AIM_CB_FAM_ATH, AIM_CB_ATH_SECURID_REQUEST, gaim_parse_auth_securid_request, 0); |
| 2086 | 1795 | |
| 1796 | conn->status |= AIM_CONN_STATUS_INPROGRESS; | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
1797 | if (gaim_proxy_connect(account, gaim_account_get_string(account, "server", OSCAR_DEFAULT_LOGIN_SERVER), |
|
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
1798 | gaim_account_get_int(account, "port", OSCAR_DEFAULT_LOGIN_PORT), |
| 5575 | 1799 | oscar_login_connect, gc) < 0) { |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1800 | gaim_connection_error(gc, _("Couldn't connect to host")); |
| 2086 | 1801 | return; |
| 1802 | } | |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1803 | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1804 | gaim_connection_update_progress(gc, _("Connecting"), 0, OSCAR_CONNECT_STEPS); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1805 | ck[0] = 0x5a; |
| 5575 | 1806 | } |
| 1807 | ||
| 1808 | static void oscar_close(GaimConnection *gc) { | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1809 | OscarData *od = (OscarData *)gc->proto_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1810 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1811 | while (od->oscar_chats) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1812 | struct chat_connection *n = od->oscar_chats->data; |
| 2086 | 1813 | if (n->inpa > 0) |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1814 | gaim_input_remove(n->inpa); |
| 2086 | 1815 | g_free(n->name); |
| 1816 | g_free(n->show); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1817 | od->oscar_chats = g_slist_remove(od->oscar_chats, n); |
| 2086 | 1818 | g_free(n); |
| 1819 | } | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1820 | while (od->direct_ims) { |
| 8971 | 1821 | struct oscar_direct_im *n = od->direct_ims->data; |
| 1822 | oscar_direct_im_destroy(od, n); | |
| 2086 | 1823 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1824 | /* BBB */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1825 | while (od->file_transfers) { |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
1826 | GaimXfer *xfer; |
|
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
1827 | xfer = (GaimXfer *)od->file_transfers->data; |
| 7805 | 1828 | gaim_xfer_cancel_local(xfer); |
| 3630 | 1829 | } |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1830 | while (od->requesticon) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1831 | char *sn = od->requesticon->data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1832 | od->requesticon = g_slist_remove(od->requesticon, sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1833 | free(sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1834 | } |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1835 | g_hash_table_destroy(od->buddyinfo); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1836 | while (od->create_rooms) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1837 | struct create_room *cr = od->create_rooms->data; |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1838 | g_free(cr->name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1839 | od->create_rooms = g_slist_remove(od->create_rooms, cr); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1840 | g_free(cr); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1841 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1842 | if (od->email) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1843 | g_free(od->email); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1844 | if (od->newp) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1845 | g_free(od->newp); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1846 | if (od->oldp) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1847 | g_free(od->oldp); |
| 2086 | 1848 | if (gc->inpa > 0) |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1849 | gaim_input_remove(gc->inpa); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1850 | if (od->cnpa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1851 | gaim_input_remove(od->cnpa); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1852 | if (od->paspa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1853 | gaim_input_remove(od->paspa); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1854 | if (od->emlpa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1855 | gaim_input_remove(od->emlpa); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1856 | if (od->icopa > 0) |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1857 | gaim_input_remove(od->icopa); |
|
6907
895dc33ce157
[gaim-migrate @ 7454]
Mark Doliner <markdoliner@pidgin.im>
parents:
6905
diff
changeset
|
1858 | if (od->icontimer > 0) |
| 8287 | 1859 | gaim_timeout_remove(od->icontimer); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1860 | if (od->getblisttimer > 0) |
| 8287 | 1861 | gaim_timeout_remove(od->getblisttimer); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1862 | if (od->getinfotimer > 0) |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1863 | gaim_timeout_remove(od->getinfotimer); |
|
10087
e5b80a38939d
[gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10042
diff
changeset
|
1864 | gaim_prefs_disconnect_by_handle(gc); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1865 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1866 | aim_session_kill(od->sess); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1867 | g_free(od->sess); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1868 | od->sess = NULL; |
| 2086 | 1869 | g_free(gc->proto_data); |
| 1870 | gc->proto_data = NULL; | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1871 | gaim_debug_info("oscar", "Signed off.\n"); |
| 2086 | 1872 | } |
| 1873 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1874 | static void oscar_bos_connect(gpointer data, gint source, GaimInputCondition cond) { |
| 5575 | 1875 | GaimConnection *gc = data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1876 | OscarData *od; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1877 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1878 | aim_conn_t *bosconn; |
| 2086 | 1879 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
1880 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 1881 | close(source); |
| 1882 | return; | |
| 1883 | } | |
| 1884 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1885 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1886 | sess = od->sess; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1887 | bosconn = od->conn; |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
1888 | bosconn->fd = source; |
| 2086 | 1889 | |
| 1890 | if (source < 0) { | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1891 | gaim_connection_error(gc, _("Could Not Connect")); |
| 2086 | 1892 | return; |
| 1893 | } | |
| 1894 | ||
| 1895 | aim_conn_completeconnect(sess, bosconn); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1896 | gc->inpa = gaim_input_add(bosconn->fd, GAIM_INPUT_READ, oscar_callback, bosconn); |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1897 | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1898 | gaim_connection_update_progress(gc, |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1899 | _("Connection established, cookie sent"), 4, OSCAR_CONNECT_STEPS); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1900 | ck[4] = 0x61; |
| 2086 | 1901 | } |
| 1902 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1903 | /* BBB */ |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1904 | /* |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1905 | * 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
|
1906 | * 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
|
1907 | * ninja. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1908 | * |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1909 | * The series of events for a file send is: |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1910 | * -Create xfer and call gaim_xfer_request (this happens in oscar_ask_sendfile) |
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
8733
diff
changeset
|
1911 | * -User chooses a file and oscar_xfer_init is called. It establishes a |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1912 | * 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
|
1913 | * gives them the file name, port, IP, etc.) |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1914 | * -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
|
1915 | * in oscar_sendfile_estblsh) |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1916 | * -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
|
1917 | * -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
|
1918 | * connection. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1919 | * -We get drunk because file transfer kicks ass. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1920 | * |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1921 | * The series of events for a file receive is: |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1922 | * -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
|
1923 | * -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
|
1924 | * oscar_xfer_init is called |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1925 | * -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
|
1926 | * -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
|
1927 | * them an AIM_CB_OFT_ACK. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1928 | * -They begin to send us lots of raw data. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1929 | * -When they finish sending data we send an AIM_CB_OFT_DONE and then close |
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
8733
diff
changeset
|
1930 | * the connection. |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1931 | * |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1932 | * Update August 2005: |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1933 | * The series of events for transfers has been seriously complicated by the addition |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1934 | * of transfer redirects and proxied connections. I could throw a whole lot of words |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1935 | * at trying to explain things here, but it probably wouldn't do much good. To get |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1936 | * a better idea of what happens, take a look at the diagrams and documentation |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1937 | * from my Summer of Code project. -- Jonathan Clark |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1938 | */ |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1939 | static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1940 | static void oscar_xfer_proxylogin(gpointer data, gint source, GaimInputCondition condition); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1941 | static void oscar_send_file_request(GaimXfer *xfer); |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1942 | |
| 8446 | 1943 | /* |
| 1944 | * Miscellaneous xfer functions | |
| 1945 | */ | |
| 1946 | static GaimXfer *oscar_find_xfer_by_cookie(GSList *fts, const fu8_t *ck) | |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1947 | { |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
1948 | GaimXfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1949 | struct aim_oft_info *oft_info; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1950 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1951 | while (fts) { |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1952 | xfer = fts->data; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1953 | oft_info = xfer->data; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1954 | |
| 8446 | 1955 | if (oft_info && !memcmp(ck, oft_info->cookie, 8)) |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1956 | return xfer; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1957 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1958 | fts = g_slist_next(fts); |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1959 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1960 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1961 | return NULL; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1962 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1963 | |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
1964 | static GaimXfer *oscar_find_xfer_by_conn(GSList *fts, aim_conn_t *conn) |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1965 | { |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
1966 | GaimXfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1967 | struct aim_oft_info *oft_info; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1968 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1969 | while (fts) { |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1970 | xfer = fts->data; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1971 | oft_info = xfer->data; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1972 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1973 | if (oft_info && (conn == oft_info->conn)) |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1974 | return xfer; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1975 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1976 | fts = g_slist_next(fts); |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1977 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1978 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1979 | return NULL; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1980 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1981 | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1982 | /* |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1983 | * We're done sending/receiving raw data through the connection. |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1984 | * If we're the receiver, send an OFT header with the bytes received |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1985 | * filled in to indicate this party's over. |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1986 | */ |
| 8446 | 1987 | static void oscar_xfer_end(GaimXfer *xfer) |
| 1988 | { | |
| 1989 | struct aim_oft_info *oft_info = xfer->data; | |
| 1990 | GaimConnection *gc = oft_info->sess->aux_data; | |
| 1991 | OscarData *od = gc->proto_data; | |
| 1992 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1993 | gaim_debug_info("oscar", "AAA - in oscar_xfer_end\n"); |
| 8446 | 1994 | |
| 1995 | if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) { | |
| 1996 | oft_info->fh.nrecvd = gaim_xfer_get_bytes_sent(xfer); | |
| 1997 | aim_oft_sendheader(oft_info->sess, AIM_CB_OFT_DONE, oft_info); | |
| 1998 | } | |
| 1999 | ||
| 2000 | aim_conn_kill(oft_info->sess, &oft_info->conn); | |
| 2001 | aim_oft_destroyinfo(oft_info); | |
| 2002 | xfer->data = NULL; | |
| 2003 | od->file_transfers = g_slist_remove(od->file_transfers, xfer); | |
| 2004 | } | |
| 2005 | ||
| 2006 | /* | |
| 2007 | * xfer functions used when receiving files | |
| 2008 | */ | |
| 2009 | ||
|
11084
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2010 | /* |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2011 | * This is a gaim timeout callback called X milliseconds after a connection is attempted |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2012 | * By this point, we've lost faith in the connection method we just tried and want to |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2013 | * try something new. Hopefully, that new connection method will be more successful, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2014 | * otherwise, we'll end up here again and again until the connection is successful |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2015 | * or we've tried every method... if that happens we just throw our hands up |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2016 | * and inform the user of his bad karma. |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2017 | */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2018 | static gboolean oscar_xfer_ip_timeout(gpointer data) { |
|
11084
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2019 | GaimXfer *xfer; |
|
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2020 | struct aim_oft_info *oft_info; |
|
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2021 | char *msg = NULL; |
|
11214
253372056e12
[gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11185
diff
changeset
|
2022 | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2023 | gaim_debug_info("oscar","AAA - in oscar_xfer_ip_timeout\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2024 | |
|
11084
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2025 | xfer = (GaimXfer*) data; |
|
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2026 | if(xfer->data) { |
|
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2027 | oft_info = (struct aim_oft_info*) xfer->data; |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2028 | |
|
11084
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2029 | /* Check to see if the clientip has produced any results */ |
|
11214
253372056e12
[gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11185
diff
changeset
|
2030 | if(!oft_info->success) { |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2031 | /* This connection has worn out its welcome. Goodbye. */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2032 | if(oft_info->conn) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2033 | close(oft_info->conn->fd); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2034 | aim_conn_kill(oft_info->sess, &oft_info->conn); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2035 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2036 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2037 | if(oft_info->method == AIM_XFER_DIRECT || oft_info->method == AIM_XFER_REDIR) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2038 | /* If (we're currently using the verified ip) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2039 | * In case clientip & verifiedip are the same, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2040 | * we must prevent an infinite loop */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2041 | if(xfer->remote_ip && oft_info->verifiedip |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2042 | && g_ascii_strcasecmp(xfer->remote_ip, oft_info->verifiedip) == 0 |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2043 | && g_ascii_strcasecmp(oft_info->clientip, oft_info->verifiedip) != 0 ) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2044 | { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2045 | /* The verifiedip timed out */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2046 | if(oft_info->method == AIM_XFER_DIRECT) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2047 | /* clientip & verifiedip failed, request a redirect |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2048 | * that is, we want the sender to connect to us */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2049 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2050 | /* Let the user not to lose hope quite yet*/ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2051 | msg = g_strdup_printf(_("Attempting connection redirect...")); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2052 | gaim_xfer_conversation_write(xfer, msg, FALSE); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2053 | g_free(msg); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2054 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2055 | gaim_timeout_add(FT_REDIR_TIMEOUT, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2056 | oscar_xfer_ip_timeout, xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2057 | oft_info->method = AIM_XFER_REDIR; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2058 | g_free(oft_info->proxyip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2059 | oft_info->proxyip = NULL; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2060 | oft_info->clientip = g_strdup( gaim_network_get_my_ip( |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2061 | oft_info->conn ? oft_info->conn->fd : -1)); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2062 | oscar_xfer_init_send(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2063 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2064 | /* clientip, verifiedip, and redirect all failed. */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2065 | gaim_debug_info("oscar", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2066 | "redirect timed out. requesting stg3 proxy\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2067 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2068 | /* Kill our listener */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2069 | gaim_input_remove(xfer->watcher); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2070 | aim_conn_kill(oft_info->sess, &oft_info->conn); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2071 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2072 | /* Instead of failing here, request a stage 3 proxy */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2073 | g_free(oft_info->clientip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2074 | g_free(oft_info->verifiedip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2075 | oft_info->clientip = NULL; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2076 | oft_info->verifiedip = NULL; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2077 | oft_info->port = 0; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2078 | oft_info->conn->type = AIM_CONN_TYPE_RENDEZVOUS; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2079 | oft_info->method = AIM_XFER_PROXY; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2080 | oft_info->stage = AIM_XFER_PROXY_STG3; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2081 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2082 | aim_im_sendch2_sendfile_ask(oft_info->sess, oft_info); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2083 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2084 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2085 | /* clientip timed out, now try verifiedip */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2086 | g_free(xfer->remote_ip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2087 | xfer->remote_ip = g_strdup(oft_info->verifiedip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2088 | gaim_debug_info("oscar","attempting connection using verifiedip\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2089 | oscar_xfer_init_recv(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2090 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2091 | } else if(oft_info->method == AIM_XFER_PROXY) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2092 | /* proxyip timed out |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2093 | * Yes, it's a bit odd to ask the user to enable proxied file transfers |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2094 | * when it's a proxied transfer that timed out. It is possible that a |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2095 | * stage 1/2 proxied transfer might work when a stage 3 will not. */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2096 | msg = g_strdup_printf(_("Transfer of file %s timed out.\n Try enabling proxy servers for file transfers in Tools->Preferences->AIM/ICQ."), |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2097 | gaim_xfer_get_filename(xfer)); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2098 | gaim_xfer_conversation_write(xfer, msg, TRUE); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2099 | g_free(msg); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2100 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2101 | if(oft_info->xfer_reffed) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2102 | oft_info->xfer_reffed = FALSE; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2103 | gaim_xfer_unref(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2104 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2105 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2106 | gaim_debug_warning("oscar","unknown xfer method encountered in timout\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2107 | } |
|
11214
253372056e12
[gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11185
diff
changeset
|
2108 | } else { |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2109 | if(oft_info->xfer_reffed) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2110 | oft_info->xfer_reffed = FALSE; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2111 | gaim_xfer_unref(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2112 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2113 | gaim_debug_info("oscar","connection successful; timeout off\n"); |
|
11084
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2114 | } |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2115 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2116 | gaim_debug_info("oscar","transfer already done; nothing to do\n"); |
|
11084
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2117 | } |
|
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2118 | return FALSE; |
|
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2119 | } |
|
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2120 | |
|
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2121 | /* |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2122 | * Connect to another client or a file transfer proxy server. |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2123 | * Though this function has traditionally only been used during file receives, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2124 | * it is now called to make any sort of file transfer connection via gaim_proxy_connect. |
|
11084
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2125 | */ |
| 8446 | 2126 | static void oscar_xfer_init_recv(GaimXfer *xfer) |
| 2127 | { | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2128 | struct aim_oft_info *oft_info; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2129 | struct aim_rv_proxy_info *proxy_info; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2130 | GaimConnection *gc; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2131 | OscarData *od; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2132 | GaimInputFunction nextstop_cb; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2133 | int rc; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2134 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2135 | g_return_if_fail(xfer != NULL); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2136 | g_return_if_fail(xfer->data != NULL); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2137 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2138 | oft_info = xfer->data; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2139 | proxy_info = oft_info->proxy_info; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2140 | gc = oft_info->sess->aux_data; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2141 | od = gc->proto_data; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2142 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2143 | gaim_debug_info("oscar", "AAA - in oscar_xfer_init_recv\n"); |
|
11214
253372056e12
[gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11185
diff
changeset
|
2144 | |
|
11084
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2145 | /* Start a timer for this ip address |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2146 | * If the clientip fails, try the verifiedip |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2147 | * If that fails, wait for the transfer to redirect |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2148 | * This xfer reference will be released in oscar_xfer_ip_timeout */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2149 | if(!oft_info->xfer_reffed) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2150 | oft_info->xfer_reffed = TRUE; |
|
11084
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2151 | gaim_xfer_ref(xfer); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2152 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2153 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2154 | if(oft_info->method != AIM_XFER_PROXY) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2155 | /* If (we're currently using the verified ip) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2156 | * In case clientip & verifiedip are the same, we must prevent an infinite loop */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2157 | if(xfer->remote_ip && oft_info->verifiedip |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2158 | && g_ascii_strcasecmp(xfer->remote_ip, oft_info->verifiedip) == 0 |
|
11084
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2159 | && g_ascii_strcasecmp(oft_info->clientip, oft_info->verifiedip) != 0 ) { |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2160 | gaim_timeout_add(FT_VERIFIEDIP_TIMEOUT, oscar_xfer_ip_timeout, xfer); |
|
11084
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2161 | } else { |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2162 | gaim_timeout_add(FT_CLIENTIP_TIMEOUT, oscar_xfer_ip_timeout, xfer); |
|
11084
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
2163 | } |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2164 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2165 | gaim_timeout_add(FT_PROXYIP_TIMEOUT, oscar_xfer_ip_timeout, xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2166 | } |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11159
diff
changeset
|
2167 | oft_info->conn = aim_newconn(od->sess, AIM_CONN_TYPE_RENDEZVOUS); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2168 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2169 | /* If we're routing this transfer through a AOL proxy server, do the special login |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2170 | * before telling the other client we're ready for action. |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2171 | * Note, firststop_cb is the first function called after gaim has made a connection |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2172 | * Also, the connection type is changed until the proxy login is complete */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2173 | if(oft_info->method == AIM_XFER_PROXY) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2174 | if(proxy_info) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2175 | proxy_info->conn = oft_info->conn; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2176 | else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2177 | gaim_debug_warning("oscar","NULL proxy_info\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2178 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2179 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2180 | nextstop_cb = oscar_xfer_proxylogin; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2181 | oft_info->conn->type = AIM_CONN_TYPE_RENDEZVOUS_PROXY; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2182 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2183 | nextstop_cb = oscar_sendfile_connected; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2184 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2185 | |
| 8446 | 2186 | if (oft_info->conn) { |
| 2187 | oft_info->conn->subtype = AIM_CONN_SUBTYPE_OFT_SENDFILE; | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2188 | aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_PROMPT, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2189 | oscar_sendfile_prompt, 0); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2190 | rc = gaim_proxy_connect(gaim_connection_get_account(gc), |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2191 | xfer->remote_ip, xfer->remote_port, nextstop_cb, xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2192 | if (rc == -1) { |
|
10654
b2dd3be1b087
[gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents:
10653
diff
changeset
|
2193 | gaim_xfer_error(GAIM_XFER_RECEIVE, gaim_xfer_get_account(xfer), xfer->who, |
| 8446 | 2194 | _("Unable to establish file descriptor.")); |
| 2195 | gaim_xfer_cancel_local(xfer); | |
| 2196 | } | |
| 2197 | } else { | |
|
10654
b2dd3be1b087
[gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents:
10653
diff
changeset
|
2198 | gaim_xfer_error(GAIM_XFER_RECEIVE, gaim_xfer_get_account(xfer), xfer->who, |
| 8446 | 2199 | _("Unable to create new connection.")); |
| 2200 | gaim_xfer_cancel_local(xfer); | |
| 2201 | /* Try a different port? Ask them to connect to us? /join #gaim and whine? */ | |
| 2202 | } | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2203 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2204 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2205 | /* |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2206 | * "Never mind. This transfer wasn't such a great idea after all." |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2207 | */ |
| 8446 | 2208 | static void oscar_xfer_cancel_recv(GaimXfer *xfer) |
| 2209 | { | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2210 | struct aim_oft_info *oft_info = xfer->data; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2211 | GaimConnection *gc = oft_info->sess->aux_data; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2212 | OscarData *od = gc->proto_data; |
| 8446 | 2213 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2214 | gaim_debug_info("oscar", "AAA - in oscar_xfer_cancel_recv\n"); |
| 8446 | 2215 | |
|
9771
42bd06e5b1b3
[gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents:
9770
diff
changeset
|
2216 | if (gaim_xfer_get_status(xfer) != GAIM_XFER_STATUS_CANCEL_REMOTE) |
|
42bd06e5b1b3
[gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents:
9770
diff
changeset
|
2217 | aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info); |
| 8446 | 2218 | |
| 2219 | aim_conn_kill(oft_info->sess, &oft_info->conn); | |
| 2220 | aim_oft_destroyinfo(oft_info); | |
| 2221 | xfer->data = NULL; | |
| 2222 | od->file_transfers = g_slist_remove(od->file_transfers, xfer); | |
| 2223 | } | |
| 2224 | ||
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2225 | /* |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2226 | * Called after every data packet we receive |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2227 | */ |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
2228 | static void oscar_xfer_ack_recv(GaimXfer *xfer, const guchar *buffer, size_t size) |
| 8446 | 2229 | { |
| 2230 | struct aim_oft_info *oft_info = xfer->data; | |
| 2231 | ||
| 2232 | /* Update our rolling checksum. Like Walmart, yo. */ | |
| 2233 | oft_info->fh.recvcsum = aim_oft_checksum_chunk(buffer, size, oft_info->fh.recvcsum); | |
| 2234 | } | |
| 2235 | ||
| 2236 | /* | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2237 | * xfer functions used for proxied file transfers |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2238 | */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2239 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2240 | /* |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2241 | * Called by oscar_send_proxylogin_cb when we receive a ready packet |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2242 | * BBB |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2243 | */ |
|
12412
8abe3226695e
[gaim-migrate @ 14719]
Richard Laager <rlaager@pidgin.im>
parents:
12393
diff
changeset
|
2244 | static void oscar_xfer_proxylogin_ready(GaimXfer *xfer, gint fd) { |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2245 | struct aim_oft_info *oft_info; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2246 | struct aim_rv_proxy_info *proxy_info; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2247 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2248 | gaim_debug_info("oscar","AAA - in oscar_xfer_proxylogin_ready\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2249 | if (!(oft_info = xfer->data)) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2250 | gaim_debug_warning("oscar","NULL oft_info; aborting\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2251 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2252 | return; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2253 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2254 | if (!(proxy_info = oft_info->proxy_info)) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2255 | gaim_debug_warning("oscar","NULL proxy_info; aborting\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2256 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2257 | return; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2258 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2259 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2260 | /* Remove the rv proxy watcher and put the connection type back the way we found it */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2261 | gaim_input_remove(xfer->watcher); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2262 | xfer->watcher = 0; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2263 | oft_info->conn->type = AIM_CONN_TYPE_RENDEZVOUS; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2264 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2265 | if(oft_info->send_or_recv == AIM_XFER_SEND) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2266 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2267 | if(oft_info->stage == AIM_XFER_PROXY_STG2) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2268 | aim_im_sendch2_sendfile_accept(oft_info->sess, oft_info); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2269 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2270 | /* For stage 2, both file headers are filled in */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2271 | memcpy(&oft_info->fh.bcookie, oft_info->cookie, 8); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2272 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2273 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2274 | /* The following is taken from oscar_sendfile_estblsh */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2275 | aim_conn_addhandler(oft_info->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ACK, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2276 | oscar_sendfile_ack, 0); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2277 | aim_conn_addhandler(oft_info->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DONE, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2278 | oscar_sendfile_done, 0); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2279 | xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2280 | oft_info->conn); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2281 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2282 | /* Inform the other user that we are connected and ready to transfer */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2283 | aim_oft_sendheader(oft_info->sess, AIM_CB_OFT_PROMPT, oft_info); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2284 | } else if(oft_info->send_or_recv == AIM_XFER_RECV) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2285 | oscar_sendfile_connected(xfer, fd, GAIM_INPUT_READ); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2286 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2287 | gaim_debug_warning("oscar","no value for send_or_recv; aborting transfer\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2288 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2289 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2290 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2291 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2292 | /* |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2293 | * Called by oscar_sendfile_proxylogin_cb when we receive an ack packet in reply to an init_send |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2294 | * BBB |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2295 | */ |
|
12412
8abe3226695e
[gaim-migrate @ 14719]
Richard Laager <rlaager@pidgin.im>
parents:
12393
diff
changeset
|
2296 | static void oscar_xfer_proxylogin_ack(GaimXfer *xfer) { |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2297 | struct aim_oft_info *oft_info; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2298 | struct aim_rv_proxy_info *proxy_info; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2299 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2300 | gaim_debug_info("oscar","AAA - in oscar_xfer_proxylogin_ack\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2301 | if (!(oft_info = xfer->data)) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2302 | gaim_debug_warning("oscar","NULL oft_info; aborting\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2303 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2304 | return; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2305 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2306 | if (!(proxy_info = oft_info->proxy_info)) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2307 | gaim_debug_warning("oscar","NULL proxy_info; aborting\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2308 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2309 | return; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2310 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2311 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2312 | /* Use the proxy "port" we just ACK-quired (hah) so that the proxy will love us */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2313 | oft_info->port = proxy_info->port; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2314 | oft_info->proxyip = g_strdup(proxy_info->ip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2315 | gaim_debug_info("oscar","received client ip and port: %s:%d\n", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2316 | oft_info->proxyip, oft_info->port); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2317 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2318 | if(oft_info->send_or_recv == AIM_XFER_SEND) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2319 | oscar_send_file_request(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2320 | } else if(oft_info->send_or_recv == AIM_XFER_RECV) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2321 | strncpy(oft_info->fh.name, xfer->filename, 64); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2322 | oft_info->fh.name[63] = '\0'; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2323 | oft_info->fh.totsize = gaim_xfer_get_size(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2324 | oft_info->fh.size = gaim_xfer_get_size(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2325 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2326 | /* Calculating the checksum can take a very long time for large files */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2327 | gaim_debug_info("oscar","calculating file checksum\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2328 | oft_info->fh.checksum = aim_oft_checksum_file(xfer->local_filename); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2329 | gaim_debug_info("oscar","checksum calculated\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2330 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2331 | aim_im_sendch2_sendfile_ask(oft_info->sess, oft_info); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2332 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2333 | gaim_debug_warning("oscar","no value for send_or_recv; aborting transfer\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2334 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2335 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2336 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2337 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2338 | /* |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2339 | * This is called whenever we receive data while negotiating a rendezvous proxy connection |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2340 | * BBB |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2341 | */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2342 | static void oscar_xfer_proxylogin_cb(gpointer data, gint source, GaimInputCondition condition) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2343 | GaimXfer *xfer; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2344 | struct aim_oft_info *oft_info; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2345 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2346 | gaim_debug_info("oscar","AAA - in oscar_xfer_proxylogin_cb\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2347 | if (!(xfer = data)) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2348 | gaim_debug_warning("oscar","NULL xfer; aborting\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2349 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2350 | return; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2351 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2352 | if (!(oft_info = xfer->data)) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2353 | gaim_debug_warning("oscar","NULL oft_info; aborting\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2354 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2355 | return; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2356 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2357 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2358 | if( (oft_info->proxy_info = aim_rv_proxy_read(oft_info->sess, oft_info->conn)) ) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2359 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2360 | switch(oft_info->proxy_info->cmd_type) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2361 | case AIM_RV_PROXY_READY: |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2362 | oscar_xfer_proxylogin_ready(xfer, source); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2363 | free(oft_info->proxy_info); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2364 | oft_info->proxy_info = NULL; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2365 | break; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2366 | case AIM_RV_PROXY_ACK: |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2367 | oscar_xfer_proxylogin_ack(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2368 | free(oft_info->proxy_info); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2369 | oft_info->proxy_info = NULL; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2370 | break; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2371 | case AIM_RV_PROXY_ERROR: |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2372 | gaim_debug_info("oscar","error logging into rendezvous proxy; err code is %x\n", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2373 | oft_info->proxy_info->err_code); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2374 | gaim_input_remove(xfer->watcher); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2375 | xfer->watcher = 0; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2376 | free(oft_info->proxy_info); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2377 | oft_info->proxy_info = NULL; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2378 | gaim_xfer_cancel_remote(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2379 | break; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2380 | /* We should never get here */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2381 | default: |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2382 | gaim_debug_info("oscar","proxylogin switch defaulted unexpectedly\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2383 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2384 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2385 | gaim_debug_info("oscar","could not read rv proxy packet\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2386 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2387 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2388 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2389 | /* |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2390 | * Called to send necessary login data to a rendezvous proxy server once we're connected |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2391 | * Takes xfer is data and fd as source |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2392 | */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2393 | static void oscar_xfer_proxylogin(gpointer data, gint source, GaimInputCondition condition) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2394 | { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2395 | GaimXfer *xfer; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2396 | struct aim_oft_info *oft_info; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2397 | struct aim_rv_proxy_info *proxy_info; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2398 | int err; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2399 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2400 | gaim_debug_info("oscar","AAA - in oscar_xfer_proxylogin\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2401 | if (!(xfer = data)) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2402 | gaim_debug_warning("oscar","NULL xfer; aborting\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2403 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2404 | return; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2405 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2406 | if (!(oft_info = xfer->data)) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2407 | gaim_debug_warning("oscar","NULL oft_info; aborting\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2408 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2409 | return; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2410 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2411 | if (!(proxy_info = oft_info->proxy_info)) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2412 | gaim_debug_warning("oscar","NULL proxy_info; aborting\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2413 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2414 | return; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2415 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2416 | if(oft_info->success) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2417 | gaim_debug_info("oscar","connection already successful, ignoring 2nd conn\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2418 | return; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2419 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2420 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2421 | xfer->fd = source; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2422 | oft_info->conn->fd = source; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2423 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2424 | proxy_info->conn = oft_info->conn; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2425 | proxy_info->flags = AIM_RV_PROXY_CLIENT_FLAGS; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2426 | memcpy(proxy_info->cookie, oft_info->cookie, 8); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2427 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2428 | if(oft_info->send_or_recv == AIM_XFER_SEND) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2429 | if(oft_info->stage == AIM_XFER_PROXY_STG1 || oft_info->stage == AIM_XFER_PROXY_STG3) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2430 | gaim_debug_info("oscar","sending INIT SEND for stage 1/3 rv proxied send\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2431 | if( (err = aim_rv_proxy_init_send(proxy_info)) ) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2432 | gaim_xfer_error(GAIM_XFER_SEND, gaim_xfer_get_account(xfer), xfer->who, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2433 | _("Unable to log into file transfer proxy.")); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2434 | gaim_debug_info("oscar", "error while sending INIT SEND rv proxy packet: %s\n", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2435 | strerror(err)); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2436 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2437 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2438 | } else if(oft_info->stage == AIM_XFER_PROXY_STG2) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2439 | gaim_debug_info("oscar","sending INIT RECV for stage 2 rv proxied send\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2440 | if( (err = aim_rv_proxy_init_recv(proxy_info)) ) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2441 | gaim_xfer_error(GAIM_XFER_SEND, gaim_xfer_get_account(xfer), xfer->who, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2442 | _("Unable to log into file transfer proxy.")); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2443 | gaim_debug_info("oscar", "error while sending INIT RECV rv proxy packet: %s\n", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2444 | strerror(err)); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2445 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2446 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2447 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2448 | gaim_debug_warning("oscar","no proxy type specified; aborting transfer\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2449 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2450 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2451 | } else if(oft_info->send_or_recv == AIM_XFER_RECV) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2452 | if(oft_info->stage == AIM_XFER_PROXY_STG2) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2453 | gaim_debug_info("oscar","sending INIT SEND for stage 2 rv proxied receive\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2454 | if( (err = aim_rv_proxy_init_send(proxy_info)) ) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2455 | gaim_xfer_error(GAIM_XFER_SEND, gaim_xfer_get_account(xfer), xfer->who, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2456 | _("Unable to log into file transfer proxy.")); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2457 | gaim_debug_info("oscar", "error while sending INIT SEND rv proxy packet: %s\n", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2458 | strerror(err)); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2459 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2460 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2461 | } else if(oft_info->stage == AIM_XFER_PROXY_STG1 |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2462 | || oft_info->stage == AIM_XFER_PROXY_STG3) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2463 | gaim_debug_info("oscar","sending INIT RECV for stage 1/3 rv proxied receive\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2464 | if( (err = aim_rv_proxy_init_recv(proxy_info)) ) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2465 | gaim_xfer_error(GAIM_XFER_SEND, gaim_xfer_get_account(xfer), xfer->who, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2466 | _("Unable to log into file transfer proxy.")); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2467 | gaim_debug_info("oscar", "error while sending INIT RECV rv proxy packet: %s\n", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2468 | strerror(err)); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2469 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2470 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2471 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2472 | gaim_debug_warning("oscar","no proxy type specified; aborting transfer\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2473 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2474 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2475 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2476 | gaim_debug_warning("oscar","no send_or_recv value specified; aborting\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2477 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2478 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2479 | free(proxy_info); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2480 | oft_info->proxy_info = NULL; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2481 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2482 | xfer->watcher = gaim_input_add(xfer->fd, GAIM_INPUT_READ, oscar_xfer_proxylogin_cb, xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2483 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2484 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2485 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2486 | /* |
| 8446 | 2487 | * xfer functions used when sending files |
| 2488 | */ | |
| 2489 | ||
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2490 | /* |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2491 | * Send a request to another client notifying them we want to sent a file |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2492 | */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2493 | static void oscar_send_file_request(GaimXfer *xfer) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2494 | { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2495 | struct aim_oft_info *oft_info = xfer->data; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2496 | GaimConnection *gc = oft_info->sess->aux_data; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2497 | OscarData *od = gc->proto_data; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2498 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2499 | gaim_debug_info("oscar", "AAA - in oscar_send_file_request\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2500 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2501 | if (oft_info->conn) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2502 | xfer->filename = g_path_get_basename(xfer->local_filename); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2503 | strncpy(oft_info->fh.name, xfer->filename, 64); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2504 | oft_info->fh.name[63] = '\0'; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2505 | oft_info->fh.totsize = gaim_xfer_get_size(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2506 | oft_info->fh.size = gaim_xfer_get_size(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2507 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2508 | /* Calculating the checksum can take a very long time for large files */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2509 | gaim_debug_info("oscar","calculating file checksum\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2510 | oft_info->fh.checksum = aim_oft_checksum_file(xfer->local_filename); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2511 | gaim_debug_info("oscar","checksum calculated\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2512 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2513 | memcpy(&oft_info->fh.bcookie, oft_info->cookie, 8); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2514 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2515 | aim_im_sendch2_sendfile_ask(od->sess, oft_info); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2516 | aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2517 | AIM_CB_OFT_ESTABLISHED, oscar_sendfile_estblsh, 0); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2518 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2519 | gaim_xfer_error(GAIM_XFER_SEND, gaim_xfer_get_account(xfer), xfer->who, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2520 | _("Unable to establish listener socket or no AOL proxy connection present.")); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2521 | gaim_xfer_cancel_local(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2522 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2523 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2524 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2525 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2526 | /* |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2527 | * Opens a listener socket in preparation for sending a file |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2528 | * This is not called if we are using a rendezvous proxy server |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2529 | */ |
| 8446 | 2530 | static void oscar_xfer_init_send(GaimXfer *xfer) |
| 2531 | { | |
| 2532 | struct aim_oft_info *oft_info = xfer->data; | |
| 2533 | GaimConnection *gc = oft_info->sess->aux_data; | |
| 2534 | OscarData *od = gc->proto_data; | |
| 2535 | int listenfd; | |
| 2536 | ||
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2537 | gaim_debug_info("oscar", "AAA - in oscar_xfer_init_send\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2538 | |
| 8446 | 2539 | /* Create a listening socket and an associated libfaim conn */ |
| 2540 | if ((listenfd = gaim_network_listen_range(5190, 5199)) < 0) { | |
| 2541 | gaim_xfer_cancel_local(xfer); | |
| 2542 | return; | |
| 2543 | } | |
| 2544 | xfer->local_port = gaim_network_get_port_from_fd(listenfd); | |
| 2545 | oft_info->port = xfer->local_port; | |
| 2546 | if (aim_sendfile_listen(od->sess, oft_info, listenfd) != 0) { | |
| 2547 | gaim_xfer_cancel_local(xfer); | |
| 2548 | return; | |
| 2549 | } | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2550 | gaim_debug_misc("oscar", |
| 8446 | 2551 | "port is %hu, ip is %s\n", |
| 2552 | xfer->local_port, oft_info->clientip); | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2553 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2554 | if(oft_info->conn) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2555 | xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2556 | oft_info->conn); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2557 | else |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2558 | gaim_debug_info("oscar","NULL oft_info->conn; not adding watcher\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2559 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2560 | oscar_send_file_request(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2561 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2562 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2563 | /* |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2564 | * "On second thought, you don't deserve this file." |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2565 | */ |
| 8446 | 2566 | static void oscar_xfer_cancel_send(GaimXfer *xfer) |
| 2567 | { | |
| 2568 | struct aim_oft_info *oft_info = xfer->data; | |
| 2569 | GaimConnection *gc = oft_info->sess->aux_data; | |
| 2570 | OscarData *od = gc->proto_data; | |
| 2571 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2572 | gaim_debug_info("oscar", "AAA - in oscar_xfer_cancel_send\n"); |
| 8446 | 2573 | |
|
9771
42bd06e5b1b3
[gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents:
9770
diff
changeset
|
2574 | if (gaim_xfer_get_status(xfer) != GAIM_XFER_STATUS_CANCEL_REMOTE) |
|
42bd06e5b1b3
[gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents:
9770
diff
changeset
|
2575 | aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info); |
| 8446 | 2576 | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2577 | /* Added a few sanity checks to prevent segfaulting */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2578 | if(oft_info) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2579 | if(oft_info->sess && oft_info->conn) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2580 | aim_conn_kill(oft_info->sess, &oft_info->conn); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2581 | aim_oft_destroyinfo(oft_info); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2582 | } |
| 8446 | 2583 | xfer->data = NULL; |
| 2584 | od->file_transfers = g_slist_remove(od->file_transfers, xfer); | |
| 2585 | } | |
| 2586 | ||
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2587 | /* |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2588 | * Called when we send some data to the other client |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2589 | */ |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
2590 | static void oscar_xfer_ack_send(GaimXfer *xfer, const guchar *buffer, size_t size) |
| 8446 | 2591 | { |
| 2592 | struct aim_oft_info *oft_info = xfer->data; | |
| 2593 | ||
| 2594 | /* I'm not sure I like how we do this. --marv | |
| 2595 | * I do. AIM file transfers aren't really meant to be thought | |
| 2596 | * of as a transferring just a single file. The rendezvous | |
| 2597 | * establishes a connection between two computers, and then | |
| 2598 | * those computers can use the same connection for transferring | |
| 2599 | * multiple files. So we don't want the Gaim core up and closing | |
| 2600 | * the socket all willy-nilly. We want to do that in the oscar | |
| 2601 | * prpl, whenever one side or the other says they're finished | |
| 2602 | * using the connection. There might be a better way to intercept | |
| 2603 | * the socket from the core, however... --KingAnt | |
| 2604 | */ | |
| 2605 | ||
| 2606 | /* | |
| 2607 | * If we're done sending, intercept the socket from the core ft code | |
| 2608 | * and wait for the other guy to send the "done" OFT packet. | |
| 2609 | */ | |
| 2610 | if (gaim_xfer_get_bytes_remaining(xfer) <= 0) { | |
| 2611 | gaim_input_remove(xfer->watcher); | |
| 2612 | xfer->watcher = gaim_input_add(xfer->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn); | |
| 2613 | xfer->fd = 0; | |
| 2614 | gaim_xfer_set_completed(xfer, TRUE); | |
| 2615 | } | |
| 2616 | } | |
| 2617 | ||
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2618 | /* |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2619 | * Called by the Gaim core to determine whether or not we're allowed to send a file |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2620 | * to this user. |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2621 | */ |
|
9466
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2622 | static gboolean oscar_can_receive_file(GaimConnection *gc, const char *who) { |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2623 | gboolean can_receive = FALSE; |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2624 | OscarData *od = gc->proto_data; |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2625 | |
|
11049
6c6adfe954f4
[gaim-migrate @ 12983]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11033
diff
changeset
|
2626 | if (od != NULL) { |
|
9466
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2627 | aim_userinfo_t *userinfo; |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2628 | userinfo = aim_locate_finduserinfo(od->sess, who); |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2629 | if (userinfo && userinfo->capabilities & AIM_CAPS_SENDFILE) |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2630 | can_receive = TRUE; |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2631 | } |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2632 | |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2633 | return can_receive; |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2634 | } |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2635 | |
|
12143
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
2636 | static GaimXfer* |
|
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
2637 | oscar_new_xfer(GaimConnection *gc, const char *who) { |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
2638 | OscarData *od; |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
2639 | GaimXfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2640 | struct aim_oft_info *oft_info; |
| 8231 | 2641 | const char *ip; |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2642 | gboolean use_rv_proxy; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2643 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2644 | use_rv_proxy = gaim_prefs_get_bool("/plugins/prpl/oscar/use_rv_proxy"); |
|
11401
cddeaa2c0ec2
[gaim-migrate @ 13636]
Mark Doliner <markdoliner@pidgin.im>
parents:
11399
diff
changeset
|
2645 | if(use_rv_proxy) |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2646 | gaim_debug_info("oscar","using stage 1 proxied transfer\n"); |
|
11401
cddeaa2c0ec2
[gaim-migrate @ 13636]
Mark Doliner <markdoliner@pidgin.im>
parents:
11399
diff
changeset
|
2647 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
2648 | od = (OscarData *)gc->proto_data; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
2649 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2650 | /* 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
|
2651 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2652 | /* Build the file transfer handle */ |
|
9466
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2653 | xfer = gaim_xfer_new(gc->account, GAIM_XFER_SEND, who); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2654 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2655 | /* Create the oscar-specific data */ |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2656 | if (use_rv_proxy) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2657 | /* This hostname will be resolved by gaim_proxy_connect */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2658 | xfer->remote_ip = g_strdup(AIM_RV_PROXY_SERVER_URL); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2659 | xfer->remote_port = AIM_RV_PROXY_CONNECT_PORT; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2660 | oft_info = aim_oft_createinfo(od->sess, NULL /*cookie*/, who, 0 /*ip*/, 0, 0, 0, NULL, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2661 | AIM_XFER_SEND, AIM_XFER_PROXY, AIM_XFER_PROXY_STG1); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2662 | oft_info->proxy_info = aim_rv_proxy_createinfo(oft_info->sess, NULL, 0); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2663 | /* We must create a cookie before the request is sent |
|
12143
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
2664 | * so that it can be sent to the proxy */ |
|
11401
cddeaa2c0ec2
[gaim-migrate @ 13636]
Mark Doliner <markdoliner@pidgin.im>
parents:
11399
diff
changeset
|
2665 | aim_icbm_makecookie(oft_info->cookie); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2666 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2667 | ip = gaim_network_get_my_ip(od->conn ? od->conn->fd : -1); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2668 | oft_info = aim_oft_createinfo(od->sess, NULL, who, ip, 0, 0, 0, NULL, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2669 | AIM_XFER_SEND, AIM_XFER_DIRECT, AIM_XFER_PROXY_NONE); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2670 | } |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2671 | xfer->data = oft_info; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2672 | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2673 | /* Setup our I/O op functions */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2674 | if (use_rv_proxy) |
|
11399
2313bf7bed5b
[gaim-migrate @ 13634]
Mark Doliner <markdoliner@pidgin.im>
parents:
11369
diff
changeset
|
2675 | gaim_xfer_set_init_fnc(xfer, oscar_xfer_init_recv); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2676 | else |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2677 | gaim_xfer_set_init_fnc(xfer, oscar_xfer_init_send); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2678 | gaim_xfer_set_end_fnc(xfer, oscar_xfer_end); |
|
4675
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
2679 | gaim_xfer_set_cancel_send_fnc(xfer, oscar_xfer_cancel_send); |
| 8446 | 2680 | gaim_xfer_set_request_denied_fnc(xfer, oscar_xfer_cancel_send); |
| 2681 | gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack_send); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2682 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2683 | /* Keep track of this transfer for later */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2684 | od->file_transfers = g_slist_append(od->file_transfers, xfer); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2685 | |
|
12143
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
2686 | return xfer; |
|
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
2687 | } |
|
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
2688 | |
|
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
2689 | /* |
|
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
2690 | * Called by the Gaim core when the user indicates that a file is to be sent to |
|
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
2691 | * a special someone. |
|
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
2692 | */ |
|
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
2693 | static void oscar_send_file(GaimConnection *gc, const char *who, const char *file) { |
|
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
2694 | GaimXfer *xfer = oscar_new_xfer(gc, who); |
|
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
2695 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2696 | /* Now perform the request */ |
|
9466
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2697 | if (file) |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2698 | gaim_xfer_request_accepted(xfer, file); |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2699 | else |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2700 | gaim_xfer_request(xfer); |
| 3630 | 2701 | } |
| 2702 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2703 | static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
6029
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
2704 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2705 | OscarData *od = gc->proto_data; |
|
6029
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
2706 | GaimAccount *account = gc->account; |
|
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
2707 | aim_conn_t *bosconn; |
|
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
2708 | char *host; int port; |
|
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
2709 | int i, rc; |
| 2086 | 2710 | va_list ap; |
| 2704 | 2711 | struct aim_authresp_info *info; |
|
6029
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
2712 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
2713 | port = gaim_account_get_int(account, "port", OSCAR_DEFAULT_LOGIN_PORT); |
| 2086 | 2714 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2715 | va_start(ap, fr); |
| 2704 | 2716 | info = va_arg(ap, struct aim_authresp_info *); |
| 2086 | 2717 | va_end(ap); |
| 2718 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2719 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2720 | "inside auth_resp (Screen name: %s)\n", info->sn); |
| 2704 | 2721 | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
2722 | 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
|
2723 | char buf[256]; |
| 2704 | 2724 | switch (info->errorcode) { |
| 2086 | 2725 | case 0x05: |
| 2726 | /* Incorrect nick/password */ | |
| 6498 | 2727 | gc->wants_to_die = TRUE; |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
2728 | gaim_connection_error(gc, _("Incorrect nickname or password.")); |
| 2086 | 2729 | break; |
| 2730 | case 0x11: | |
| 2731 | /* Suspended account */ | |
| 6498 | 2732 | gc->wants_to_die = TRUE; |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
2733 | gaim_connection_error(gc, _("Your account is currently suspended.")); |
| 2086 | 2734 | break; |
|
3498
3f6ce04ea3ad
[gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents:
3490
diff
changeset
|
2735 | case 0x14: |
|
3f6ce04ea3ad
[gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents:
3490
diff
changeset
|
2736 | /* service temporarily unavailable */ |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
2737 | 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
|
2738 | break; |
| 2086 | 2739 | case 0x18: |
| 2740 | /* connecting too frequently */ | |
| 6498 | 2741 | gc->wants_to_die = TRUE; |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
2742 | 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 | 2743 | break; |
| 2744 | case 0x1c: | |
| 2745 | /* client too old */ | |
| 6498 | 2746 | gc->wants_to_die = TRUE; |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6350
diff
changeset
|
2747 | g_snprintf(buf, sizeof(buf), _("The client version you are using is too old. Please upgrade at %s"), GAIM_WEBSITE); |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
2748 | gaim_connection_error(gc, buf); |
| 2086 | 2749 | break; |
| 2750 | default: | |
|
6623
75ba9eb9d3f8
[gaim-migrate @ 7147]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
6622
diff
changeset
|
2751 | gaim_connection_error(gc, _("Authentication failed")); |
| 2086 | 2752 | break; |
| 2753 | } | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2754 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2755 | "Login Error Code 0x%04hx\n", info->errorcode); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2756 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2757 | "Error URL: %s\n", info->errorurl); |
| 2086 | 2758 | od->killme = TRUE; |
| 2759 | return 1; | |
| 2760 | } | |
| 2761 | ||
| 2762 | ||
|
9992
d733f96bfc7b
[gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents:
9991
diff
changeset
|
2763 | gaim_debug_misc("oscar", "Reg status: %hu\n", info->regstatus); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2764 | |
| 2704 | 2765 | if (info->email) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2766 | gaim_debug_misc("oscar", "Email: %s\n", info->email); |
| 2086 | 2767 | } else { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2768 | gaim_debug_misc("oscar", "Email is NULL\n"); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2769 | } |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2770 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2771 | gaim_debug_misc("oscar", "BOSIP: %s\n", info->bosip); |
|
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2772 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2773 | "Closing auth connection...\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2774 | aim_conn_kill(sess, &fr->conn); |
| 2086 | 2775 | |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11159
diff
changeset
|
2776 | bosconn = aim_newconn(sess, AIM_CONN_TYPE_BOS); |
| 2086 | 2777 | if (bosconn == NULL) { |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
2778 | gaim_connection_error(gc, _("Internal Error")); |
| 2086 | 2779 | od->killme = TRUE; |
| 2780 | return 0; | |
| 2781 | } | |
| 2782 | ||
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
2783 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
| 2675 | 2784 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_bos, 0); |
| 2086 | 2785 | aim_conn_addhandler(sess, bosconn, 0x0009, 0x0003, gaim_bosrights, 0); |
| 2786 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ACK, AIM_CB_ACK_ACK, NULL, 0); | |
| 2787 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_REDIRECT, gaim_handle_redirect, 0); | |
| 2993 | 2788 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_RIGHTSINFO, gaim_parse_locaterights, 0); |
| 2086 | 2789 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_RIGHTSINFO, gaim_parse_buddyrights, 0); |
| 2790 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_ONCOMING, gaim_parse_oncoming, 0); | |
| 2791 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_OFFGOING, gaim_parse_offgoing, 0); | |
| 2792 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_INCOMING, gaim_parse_incoming_im, 0); | |
| 2793 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_ERROR, gaim_parse_locerr, 0); | |
| 2794 | 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
|
2795 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_CLIENTAUTORESP, gaim_parse_clientauto, 0); |
| 2086 | 2796 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_RATECHANGE, gaim_parse_ratechange, 0); |
| 2797 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_EVIL, gaim_parse_evilnotify, 0); | |
| 2798 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOK, AIM_CB_LOK_ERROR, gaim_parse_searcherror, 0); | |
| 2799 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOK, 0x0003, gaim_parse_searchreply, 0); | |
| 2800 | 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
|
2801 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_MTN, gaim_parse_mtn, 0); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2802 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_USERINFO, gaim_parse_userinfo, 0); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
2803 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_REQUESTINFOTIMEOUT, gaim_reqinfo_timeout, 0); |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
2804 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_GOTINFOBLOCK, gaim_got_infoblock, 0); |
| 2086 | 2805 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_ACK, gaim_parse_msgack, 0); |
| 2806 | 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
|
2807 | aim_conn_addhandler(sess, bosconn, 0x0004, 0x0005, gaim_icbm_param_info, 0); |
| 2086 | 2808 | aim_conn_addhandler(sess, bosconn, 0x0001, 0x0001, gaim_parse_genericerr, 0); |
| 2809 | aim_conn_addhandler(sess, bosconn, 0x0003, 0x0001, gaim_parse_genericerr, 0); | |
| 2810 | aim_conn_addhandler(sess, bosconn, 0x0009, 0x0001, gaim_parse_genericerr, 0); | |
| 2811 | aim_conn_addhandler(sess, bosconn, 0x0001, 0x001f, gaim_memrequest, 0); | |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
2812 | aim_conn_addhandler(sess, bosconn, 0x0001, 0x000f, gaim_selfinfo, 0); |
|
5844
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
2813 | aim_conn_addhandler(sess, bosconn, 0x0001, 0x0021, oscar_icon_req,0); |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2814 | 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
|
2815 | 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
|
2816 | 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
|
2817 | 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
|
2818 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_INFO, gaim_icqinfo, 0); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
2819 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ERROR, gaim_ssi_parseerr, 0); |
| 2991 | 2820 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RIGHTSINFO, gaim_ssi_parserights, 0); |
| 2821 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_LIST, gaim_ssi_parselist, 0); | |
| 2822 | 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
|
2823 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_SRVACK, gaim_ssi_parseack, 0); |
|
8227
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
2824 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ADD, gaim_ssi_parseadd, 0); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2825 | 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
|
2826 | 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
|
2827 | 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
|
2828 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ADDED, gaim_ssi_gotadded, 0); |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
2829 | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2830 | od->conn = bosconn; |
| 2704 | 2831 | for (i = 0; i < (int)strlen(info->bosip); i++) { |
| 2832 | if (info->bosip[i] == ':') { | |
| 2833 | port = atoi(&(info->bosip[i+1])); | |
| 2086 | 2834 | break; |
| 2835 | } | |
| 2836 | } | |
| 2704 | 2837 | host = g_strndup(info->bosip, i); |
| 2086 | 2838 | bosconn->status |= AIM_CONN_STATUS_INPROGRESS; |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
2839 | rc = gaim_proxy_connect(gc->account, host, port, oscar_bos_connect, gc); |
| 2086 | 2840 | g_free(host); |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
2841 | if (rc < 0) { |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
2842 | gaim_connection_error(gc, _("Could Not Connect")); |
| 2086 | 2843 | od->killme = TRUE; |
| 2844 | return 0; | |
| 2845 | } | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
2846 | aim_sendcookie(sess, bosconn, info->cookielen, info->cookie); |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2847 | gaim_input_remove(gc->inpa); |
| 2704 | 2848 | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2849 | gaim_connection_update_progress(gc, _("Received authorization"), 3, OSCAR_CONNECT_STEPS); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
2850 | ck[3] = 0x64; |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
2851 | |
| 2086 | 2852 | return 1; |
| 2853 | } | |
| 2854 | ||
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2855 | static void |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2856 | gaim_parse_auth_securid_request_yes_cb(gpointer user_data, const char *msg) |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2857 | { |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2858 | GaimConnection *gc = user_data; |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2859 | OscarData *od = gc->proto_data; |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2860 | aim_session_t *sess = od->sess; |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2861 | |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2862 | aim_auth_securid_send(sess, msg); |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2863 | } |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2864 | |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2865 | static void |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2866 | gaim_parse_auth_securid_request_no_cb(gpointer user_data, const char *value) |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2867 | { |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2868 | GaimConnection *gc = user_data; |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2869 | OscarData *od = gc->proto_data; |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2870 | |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2871 | /* Disconnect */ |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2872 | gc->wants_to_die = TRUE; |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2873 | gaim_connection_error(gc, _("The SecurID key entered is invalid.")); |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2874 | od->killme = TRUE; |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2875 | } |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2876 | |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2877 | static int |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2878 | gaim_parse_auth_securid_request(aim_session_t *sess, aim_frame_t *fr, ...) |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2879 | { |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2880 | GaimConnection *gc = sess->aux_data; |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2881 | GaimAccount *account = gaim_connection_get_account(gc); |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2882 | gchar *primary; |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2883 | |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2884 | gaim_debug_info("oscar", "Got SecurID request\n"); |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2885 | |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2886 | primary = g_strdup_printf("Enter the SecurID key for %s.", gaim_account_get_username(account)); |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2887 | gaim_request_input(gc, NULL, _("Enter SecurID"), primary, |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2888 | _("Enter the 6 digit number from the digital display."), |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2889 | FALSE, FALSE, NULL, |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2890 | _("OK"), G_CALLBACK(gaim_parse_auth_securid_request_yes_cb), |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2891 | _("Cancel"), G_CALLBACK(gaim_parse_auth_securid_request_no_cb), |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2892 | gc); |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2893 | g_free(primary); |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2894 | |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2895 | return 1; |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2896 | } |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
2897 | |
|
7285
b9d07d0c9bc2
[gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents:
7283
diff
changeset
|
2898 | /* XXX - Should use gaim_url_fetch for the below stuff */ |
| 2086 | 2899 | struct pieceofcrap { |
| 5575 | 2900 | GaimConnection *gc; |
| 2086 | 2901 | unsigned long offset; |
| 2902 | unsigned long len; | |
| 2903 | char *modname; | |
| 2904 | int fd; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2905 | aim_conn_t *conn; |
| 2086 | 2906 | unsigned int inpa; |
| 2907 | }; | |
| 2908 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2909 | static void damn_you(gpointer data, gint source, GaimInputCondition c) |
| 2086 | 2910 | { |
| 2911 | struct pieceofcrap *pos = data; | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2912 | OscarData *od = pos->gc->proto_data; |
| 2086 | 2913 | char in = '\0'; |
| 2914 | int x = 0; | |
| 2915 | unsigned char m[17]; | |
| 2916 | ||
| 2917 | while (read(pos->fd, &in, 1) == 1) { | |
| 2918 | if (in == '\n') | |
| 2919 | x++; | |
| 2920 | else if (in != '\r') | |
| 2921 | x = 0; | |
| 2922 | if (x == 2) | |
| 2923 | break; | |
| 2924 | in = '\0'; | |
| 2925 | } | |
| 2926 | if (in != '\n') { | |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
2927 | char buf[256]; |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
2928 | g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until " |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6350
diff
changeset
|
2929 | "this is fixed. Check %s for updates."), GAIM_WEBSITE); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2930 | gaim_notify_warning(pos->gc, NULL, |
| 7422 | 2931 | _("Gaim was unable to get a valid AIM login hash."), |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2932 | buf); |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2933 | gaim_input_remove(pos->inpa); |
| 2086 | 2934 | close(pos->fd); |
| 2935 | g_free(pos); | |
| 2936 | return; | |
| 2937 | } | |
| 2938 | read(pos->fd, m, 16); | |
| 2939 | m[16] = '\0'; | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2940 | gaim_debug_misc("oscar", "Sending hash: "); |
| 2086 | 2941 | for (x = 0; x < 16; x++) |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2942 | gaim_debug_misc(NULL, "%02hhx ", (unsigned char)m[x]); |
|
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2943 | |
|
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2944 | gaim_debug_misc(NULL, "\n"); |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2945 | gaim_input_remove(pos->inpa); |
| 2086 | 2946 | close(pos->fd); |
| 2947 | aim_sendmemblock(od->sess, pos->conn, 0, 16, m, AIM_SENDMEMBLOCK_FLAG_ISHASH); | |
| 2948 | g_free(pos); | |
| 2949 | } | |
| 2950 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2951 | static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) { |
| 2086 | 2952 | struct pieceofcrap *pos = data; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2953 | gchar *buf; |
| 2086 | 2954 | |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
2955 | pos->fd = source; |
|
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
2956 | |
| 2086 | 2957 | if (source < 0) { |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2958 | buf = g_strdup_printf(_("You may be disconnected shortly. You may want to use TOC until " |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6350
diff
changeset
|
2959 | "this is fixed. Check %s for updates."), GAIM_WEBSITE); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2960 | gaim_notify_warning(pos->gc, NULL, |
| 7422 | 2961 | _("Gaim was unable to get a valid AIM login hash."), |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2962 | buf); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2963 | g_free(buf); |
| 2086 | 2964 | if (pos->modname) |
| 2965 | g_free(pos->modname); | |
| 2966 | g_free(pos); | |
| 2967 | return; | |
| 2968 | } | |
| 2969 | ||
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2970 | buf = g_strdup_printf("GET " AIMHASHDATA "?offset=%ld&len=%ld&modname=%s HTTP/1.0\n\n", |
| 2086 | 2971 | pos->offset, pos->len, pos->modname ? pos->modname : ""); |
| 2972 | write(pos->fd, buf, strlen(buf)); | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2973 | g_free(buf); |
| 2086 | 2974 | if (pos->modname) |
| 2975 | g_free(pos->modname); | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2976 | pos->inpa = gaim_input_add(pos->fd, GAIM_INPUT_READ, damn_you, pos); |
| 2086 | 2977 | return; |
| 2978 | } | |
| 2979 | ||
| 2980 | /* size of icbmui.ocm, the largest module in AIM 3.5 */ | |
| 2981 | #define AIM_MAX_FILE_SIZE 98304 | |
| 2982 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2983 | int gaim_memrequest(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 2984 | va_list ap; |
| 2985 | struct pieceofcrap *pos; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2986 | fu32_t offset, len; |
| 2086 | 2987 | char *modname; |
| 2988 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2989 | va_start(ap, fr); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2990 | offset = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2991 | len = va_arg(ap, fu32_t); |
| 2086 | 2992 | modname = va_arg(ap, char *); |
| 2993 | va_end(ap); | |
| 2994 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2995 | gaim_debug_misc("oscar", |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
2996 | "offset: %u, len: %u, file: %s\n", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2997 | offset, len, (modname ? modname : "aim.exe")); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2998 | |
| 2086 | 2999 | if (len == 0) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3000 | gaim_debug_misc("oscar", "len is 0, hashing NULL\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3001 | aim_sendmemblock(sess, fr->conn, offset, len, NULL, |
| 2086 | 3002 | AIM_SENDMEMBLOCK_FLAG_ISREQUEST); |
| 3003 | return 1; | |
| 3004 | } | |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
3005 | /* uncomment this when you're convinced it's right. remember, it's been wrong before. */ |
|
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
3006 | #if 0 |
| 2086 | 3007 | if (offset > AIM_MAX_FILE_SIZE || len > AIM_MAX_FILE_SIZE) { |
| 3008 | char *buf; | |
| 3009 | int i = 8; | |
| 3010 | if (modname) | |
| 3011 | i += strlen(modname); | |
| 3012 | buf = g_malloc(i); | |
| 3013 | i = 0; | |
| 3014 | if (modname) { | |
| 3015 | memcpy(buf, modname, strlen(modname)); | |
| 3016 | i += strlen(modname); | |
| 3017 | } | |
| 3018 | buf[i++] = offset & 0xff; | |
| 3019 | buf[i++] = (offset >> 8) & 0xff; | |
| 3020 | buf[i++] = (offset >> 16) & 0xff; | |
| 3021 | buf[i++] = (offset >> 24) & 0xff; | |
| 3022 | buf[i++] = len & 0xff; | |
| 3023 | buf[i++] = (len >> 8) & 0xff; | |
| 3024 | buf[i++] = (len >> 16) & 0xff; | |
| 3025 | buf[i++] = (len >> 24) & 0xff; | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3026 | gaim_debug_misc("oscar", "len + offset is invalid, " |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3027 | "hashing request\n"); |
| 2086 | 3028 | aim_sendmemblock(sess, command->conn, offset, i, buf, AIM_SENDMEMBLOCK_FLAG_ISREQUEST); |
| 3029 | g_free(buf); | |
| 3030 | return 1; | |
| 3031 | } | |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
3032 | #endif |
| 2086 | 3033 | |
| 3034 | pos = g_new0(struct pieceofcrap, 1); | |
| 3035 | pos->gc = sess->aux_data; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3036 | pos->conn = fr->conn; |
| 2086 | 3037 | |
| 3038 | pos->offset = offset; | |
| 3039 | pos->len = len; | |
| 3040 | pos->modname = modname ? g_strdup(modname) : NULL; | |
| 3041 | ||
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
3042 | if (gaim_proxy_connect(pos->gc->account, "gaim.sourceforge.net", 80, straight_to_hell, pos) != 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
3043 | char buf[256]; |
| 2086 | 3044 | if (pos->modname) |
| 3045 | g_free(pos->modname); | |
| 3046 | g_free(pos); | |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
3047 | g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until " |
|
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
3048 | "this is fixed. Check %s for updates."), GAIM_WEBSITE); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3049 | gaim_notify_warning(pos->gc, NULL, |
| 7422 | 3050 | _("Gaim was unable to get a valid login hash."), |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3051 | buf); |
| 2086 | 3052 | } |
| 3053 | ||
| 3054 | return 1; | |
| 3055 | } | |
| 3056 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3057 | static int gaim_parse_login(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3058 | GaimConnection *gc = sess->aux_data; |
|
5591
2327f0802baa
[gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents:
5580
diff
changeset
|
3059 | GaimAccount *account = gaim_connection_get_account(gc); |
|
12049
36cbae47ceec
[gaim-migrate @ 14344]
Mark Doliner <markdoliner@pidgin.im>
parents:
12000
diff
changeset
|
3060 | struct client_info_s info = CLIENTINFO_GAIM; |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
3061 | va_list ap; |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
3062 | char *key; |
| 2086 | 3063 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3064 | va_start(ap, fr); |
| 2086 | 3065 | key = va_arg(ap, char *); |
| 3066 | va_end(ap); | |
| 3067 | ||
|
12049
36cbae47ceec
[gaim-migrate @ 14344]
Mark Doliner <markdoliner@pidgin.im>
parents:
12000
diff
changeset
|
3068 | aim_send_login(sess, fr->conn, gaim_account_get_username(account), |
|
36cbae47ceec
[gaim-migrate @ 14344]
Mark Doliner <markdoliner@pidgin.im>
parents:
12000
diff
changeset
|
3069 | gaim_connection_get_password(gc), &info, key); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3070 | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3071 | gaim_connection_update_progress(gc, _("Password sent"), 2, OSCAR_CONNECT_STEPS); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
3072 | ck[2] = 0x6c; |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
3073 | |
| 2086 | 3074 | return 1; |
| 3075 | } | |
| 3076 | ||
| 2675 | 3077 | static int conninitdone_chat(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3078 | GaimConnection *gc = sess->aux_data; |
| 2647 | 3079 | struct chat_connection *chatcon; |
| 3080 | static int id = 1; | |
| 3081 | ||
|
6905
dd40a6134713
[gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents:
6879
diff
changeset
|
3082 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, 0x0001, gaim_parse_genericerr, 0); |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
3083 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERJOIN, gaim_conv_chat_join, 0); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
3084 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERLEAVE, gaim_conv_chat_leave, 0); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
3085 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_ROOMINFOUPDATE, gaim_conv_chat_info_update, 0); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
3086 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_INCOMINGMSG, gaim_conv_chat_incoming_msg, 0); |
| 2675 | 3087 | |
| 2672 | 3088 | aim_clientready(sess, fr->conn); |
| 2675 | 3089 | |
| 2647 | 3090 | chatcon = find_oscar_chat_by_conn(gc, fr->conn); |
| 3091 | chatcon->id = id; | |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
3092 | chatcon->conv = serv_got_joined_chat(gc, id++, chatcon->show); |
| 2647 | 3093 | |
| 3094 | return 1; | |
| 3095 | } | |
| 3096 | ||
| 2675 | 3097 | static int conninitdone_chatnav(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 3098 | ||
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
3099 | aim_conn_addhandler(sess, fr->conn, 0x000d, 0x0001, gaim_parse_genericerr, 0); |
| 2647 | 3100 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CTN, AIM_CB_CTN_INFO, gaim_chatnav_info, 0); |
| 2675 | 3101 | |
| 3102 | aim_clientready(sess, fr->conn); | |
| 3103 | ||
| 3104 | aim_chatnav_reqrights(sess, fr->conn); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3105 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3106 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3107 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3108 | |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3109 | 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
|
3110 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3111 | 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
|
3112 | 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
|
3113 | |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
3114 | aim_email_sendcookies(sess); |
|
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
3115 | aim_email_activate(sess); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3116 | aim_clientready(sess, fr->conn); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3117 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3118 | return 1; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3119 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3120 | |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3121 | static int conninitdone_icon(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3122 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3123 | OscarData *od = gc->proto_data; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3124 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3125 | 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
|
3126 | 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
|
3127 | 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
|
3128 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3129 | aim_clientready(sess, fr->conn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3130 | |
| 4823 | 3131 | od->iconconnecting = FALSE; |
| 3132 | ||
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3133 | if (od->icontimer) |
| 8287 | 3134 | gaim_timeout_remove(od->icontimer); |
| 8273 | 3135 | od->icontimer = gaim_timeout_add(100, gaim_icon_timerfunc, gc); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3136 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3137 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3138 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3139 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3140 | static void oscar_chatnav_connect(gpointer data, gint source, GaimInputCondition cond) { |
| 5575 | 3141 | GaimConnection *gc = data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3142 | OscarData *od; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3143 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3144 | aim_conn_t *tstconn; |
| 2086 | 3145 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
3146 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 3147 | close(source); |
| 3148 | return; | |
| 3149 | } | |
| 3150 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3151 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3152 | sess = od->sess; |
| 2086 | 3153 | 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
|
3154 | tstconn->fd = source; |
| 2086 | 3155 | |
| 3156 | if (source < 0) { | |
| 3157 | aim_conn_kill(sess, &tstconn); | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3158 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3159 | "unable to connect to chatnav server\n"); |
| 2086 | 3160 | return; |
| 3161 | } | |
| 3162 | ||
| 3163 | aim_conn_completeconnect(sess, tstconn); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3164 | od->cnpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3165 | gaim_debug_info("oscar", "chatnav: connected\n"); |
| 2086 | 3166 | } |
| 3167 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
3168 | static void oscar_auth_connect(gpointer data, gint source, GaimInputCondition cond) |
| 2086 | 3169 | { |
| 5575 | 3170 | GaimConnection *gc = data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3171 | OscarData *od; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3172 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3173 | aim_conn_t *tstconn; |
| 2086 | 3174 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
3175 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 3176 | close(source); |
| 3177 | return; | |
| 3178 | } | |
| 3179 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3180 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3181 | sess = od->sess; |
| 2086 | 3182 | 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
|
3183 | tstconn->fd = source; |
| 2086 | 3184 | |
| 3185 | if (source < 0) { | |
| 3186 | aim_conn_kill(sess, &tstconn); | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3187 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3188 | "unable to connect to authorizer\n"); |
| 2086 | 3189 | return; |
| 3190 | } | |
| 3191 | ||
| 3192 | aim_conn_completeconnect(sess, tstconn); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3193 | od->paspa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3194 | gaim_debug_info("oscar", "admin: connected\n"); |
| 2086 | 3195 | } |
| 3196 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
3197 | static void oscar_chat_connect(gpointer data, gint source, GaimInputCondition cond) |
| 2086 | 3198 | { |
| 3199 | struct chat_connection *ccon = data; | |
| 5575 | 3200 | GaimConnection *gc = ccon->gc; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3201 | OscarData *od; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3202 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3203 | aim_conn_t *tstconn; |
| 2086 | 3204 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
3205 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 3206 | close(source); |
| 3207 | g_free(ccon->show); | |
| 3208 | g_free(ccon->name); | |
| 3209 | g_free(ccon); | |
| 3210 | return; | |
| 3211 | } | |
| 3212 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3213 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3214 | sess = od->sess; |
| 2086 | 3215 | tstconn = ccon->conn; |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
3216 | tstconn->fd = source; |
| 2086 | 3217 | |
| 3218 | if (source < 0) { | |
| 3219 | aim_conn_kill(sess, &tstconn); | |
| 3220 | g_free(ccon->show); | |
| 3221 | g_free(ccon->name); | |
| 3222 | g_free(ccon); | |
| 3223 | return; | |
| 3224 | } | |
| 3225 | ||
| 3226 | aim_conn_completeconnect(sess, ccon->conn); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3227 | 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
|
3228 | od->oscar_chats = g_slist_append(od->oscar_chats, ccon); |
| 2086 | 3229 | } |
| 3230 | ||
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3231 | static void oscar_email_connect(gpointer data, gint source, GaimInputCondition cond) { |
| 5575 | 3232 | GaimConnection *gc = data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3233 | OscarData *od; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3234 | aim_session_t *sess; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3235 | aim_conn_t *tstconn; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3236 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
3237 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3238 | close(source); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3239 | return; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3240 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3241 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3242 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3243 | sess = od->sess; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3244 | 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
|
3245 | tstconn->fd = source; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3246 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3247 | if (source < 0) { |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3248 | aim_conn_kill(sess, &tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3249 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3250 | "unable to connect to email server\n"); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3251 | return; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3252 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3253 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3254 | aim_conn_completeconnect(sess, tstconn); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3255 | od->emlpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3256 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3257 | "email: connected\n"); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3258 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3259 | |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3260 | static void oscar_icon_connect(gpointer data, gint source, GaimInputCondition cond) { |
| 5575 | 3261 | GaimConnection *gc = data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3262 | OscarData *od; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3263 | aim_session_t *sess; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3264 | aim_conn_t *tstconn; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3265 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
3266 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3267 | close(source); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3268 | return; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3269 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3270 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3271 | od = gc->proto_data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3272 | sess = od->sess; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3273 | tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_ICON); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3274 | tstconn->fd = source; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3275 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3276 | if (source < 0) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3277 | aim_conn_kill(sess, &tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3278 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3279 | "unable to connect to icon server\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3280 | return; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3281 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3282 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3283 | aim_conn_completeconnect(sess, tstconn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3284 | od->icopa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3285 | gaim_debug_info("oscar", "icon: connected\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3286 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3287 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3288 | /* 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
|
3289 | static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3290 | GaimConnection *gc = sess->aux_data; |
| 3291 | GaimAccount *account = gaim_connection_get_account(gc); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3292 | aim_conn_t *tstconn; |
| 4452 | 3293 | int i; |
| 2086 | 3294 | char *host; |
| 3295 | int port; | |
|
4821
9107fba2dbe5
[gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents:
4820
diff
changeset
|
3296 | va_list ap; |
|
9107fba2dbe5
[gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents:
4820
diff
changeset
|
3297 | struct aim_redirect_data *redir; |
| 2086 | 3298 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
3299 | port = gaim_account_get_int(account, "port", OSCAR_DEFAULT_LOGIN_PORT); |
| 2086 | 3300 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3301 | va_start(ap, fr); |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
3302 | redir = va_arg(ap, struct aim_redirect_data *); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
3303 | va_end(ap); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
3304 | |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
3305 | for (i = 0; i < (int)strlen(redir->ip); i++) { |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
3306 | if (redir->ip[i] == ':') { |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
3307 | port = atoi(&(redir->ip[i+1])); |
| 2086 | 3308 | break; |
| 3309 | } | |
| 3310 | } | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
3311 | host = g_strndup(redir->ip, i); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
3312 | |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
3313 | switch(redir->group) { |
| 2086 | 3314 | case 0x7: /* Authorizer */ |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3315 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3316 | "Reconnecting with authorizor...\n"); |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11159
diff
changeset
|
3317 | tstconn = aim_newconn(sess, AIM_CONN_TYPE_AUTH); |
| 2086 | 3318 | if (tstconn == NULL) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3319 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3320 | "unable to reconnect with authorizer\n"); |
| 2086 | 3321 | g_free(host); |
| 3322 | return 1; | |
| 3323 | } | |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3324 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
| 2675 | 3325 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_admin, 0); |
| 2086 | 3326 | |
| 3327 | tstconn->status |= AIM_CONN_STATUS_INPROGRESS; | |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
3328 | if (gaim_proxy_connect(account, host, port, oscar_auth_connect, gc) != 0) { |
| 2086 | 3329 | aim_conn_kill(sess, &tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3330 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3331 | "unable to reconnect with authorizer\n"); |
| 2086 | 3332 | g_free(host); |
| 3333 | return 1; | |
| 3334 | } | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
3335 | aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3336 | break; |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3337 | |
| 2086 | 3338 | case 0xd: /* ChatNav */ |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11159
diff
changeset
|
3339 | tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHATNAV); |
| 2086 | 3340 | if (tstconn == NULL) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3341 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3342 | "unable to connect to chatnav server\n"); |
| 2086 | 3343 | g_free(host); |
| 3344 | return 1; | |
| 3345 | } | |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3346 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
| 2675 | 3347 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_chatnav, 0); |
| 2086 | 3348 | |
| 3349 | tstconn->status |= AIM_CONN_STATUS_INPROGRESS; | |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
3350 | if (gaim_proxy_connect(account, host, port, oscar_chatnav_connect, gc) != 0) { |
| 2086 | 3351 | aim_conn_kill(sess, &tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3352 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3353 | "unable to connect to chatnav server\n"); |
| 2086 | 3354 | g_free(host); |
| 3355 | return 1; | |
| 3356 | } | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
3357 | aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3358 | break; |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3359 | |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3360 | case 0xe: { /* Chat */ |
| 2086 | 3361 | struct chat_connection *ccon; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3362 | |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11159
diff
changeset
|
3363 | tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT); |
| 2086 | 3364 | if (tstconn == NULL) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3365 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3366 | "unable to connect to chat server\n"); |
| 2086 | 3367 | g_free(host); |
| 3368 | return 1; | |
| 3369 | } | |
| 3370 | ||
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3371 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
| 2675 | 3372 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_chat, 0); |
| 3373 | ||
| 2086 | 3374 | ccon = g_new0(struct chat_connection, 1); |
| 3375 | ccon->conn = tstconn; | |
| 3376 | ccon->gc = gc; | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
3377 | ccon->name = g_strdup(redir->chat.room); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
3378 | ccon->exchange = redir->chat.exchange; |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
3379 | ccon->instance = redir->chat.instance; |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
3380 | ccon->show = extract_name(redir->chat.room); |
| 4634 | 3381 | |
| 2086 | 3382 | ccon->conn->status |= AIM_CONN_STATUS_INPROGRESS; |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
3383 | if (gaim_proxy_connect(account, host, port, oscar_chat_connect, ccon) != 0) { |
| 2086 | 3384 | aim_conn_kill(sess, &tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3385 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3386 | "unable to connect to chat server\n"); |
| 2086 | 3387 | g_free(host); |
| 3388 | g_free(ccon->show); | |
| 3389 | g_free(ccon->name); | |
| 3390 | g_free(ccon); | |
| 3391 | return 1; | |
| 3392 | } | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
3393 | aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3394 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3395 | "Connected to chat room %s exchange %hu\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3396 | ccon->name, ccon->exchange); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3397 | } break; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3398 | |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3399 | case 0x0010: { /* icon */ |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11159
diff
changeset
|
3400 | if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_ICON))) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3401 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3402 | "unable to connect to icon server\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3403 | g_free(host); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3404 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3405 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3406 | 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
|
3407 | 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
|
3408 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3409 | tstconn->status |= AIM_CONN_STATUS_INPROGRESS; |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
3410 | if (gaim_proxy_connect(account, host, port, oscar_icon_connect, gc) != 0) { |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3411 | aim_conn_kill(sess, &tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3412 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3413 | "unable to connect to icon server\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3414 | g_free(host); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3415 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3416 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3417 | aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3418 | } break; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3419 | |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3420 | case 0x0018: { /* email */ |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11159
diff
changeset
|
3421 | if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_EMAIL))) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3422 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3423 | "unable to connect to email server\n"); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3424 | g_free(host); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3425 | return 1; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3426 | } |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3427 | 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
|
3428 | 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
|
3429 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3430 | tstconn->status |= AIM_CONN_STATUS_INPROGRESS; |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
3431 | if (gaim_proxy_connect(account, host, port, oscar_email_connect, gc) != 0) { |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3432 | aim_conn_kill(sess, &tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3433 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3434 | "unable to connect to email server\n"); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3435 | g_free(host); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3436 | return 1; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3437 | } |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
3438 | aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3439 | } break; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3440 | |
| 2086 | 3441 | default: /* huh? */ |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3442 | gaim_debug_warning("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3443 | "got redirect for unknown service 0x%04hx\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3444 | redir->group); |
| 2086 | 3445 | break; |
| 3446 | } | |
| 3447 | ||
| 3448 | g_free(host); | |
| 3449 | return 1; | |
| 3450 | } | |
| 3451 | ||
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
3452 | static int gaim_parse_oncoming(aim_session_t *sess, aim_frame_t *fr, ...) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
3453 | { |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
3454 | GaimConnection *gc; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
3455 | GaimAccount *account; |
|
11973
42a29ebcf30b
[gaim-migrate @ 14266]
Mark Doliner <markdoliner@pidgin.im>
parents:
11965
diff
changeset
|
3456 | GaimPresence *presence; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
3457 | OscarData *od; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3458 | struct buddyinfo *bi; |
| 2993 | 3459 | time_t time_idle = 0, signon = 0; |
| 3460 | int type = 0; | |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3461 | gboolean buddy_is_away = FALSE; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3462 | const char *status_id; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3463 | gboolean have_status_message = FALSE; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3464 | char *message = NULL; |
| 2086 | 3465 | va_list ap; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3466 | aim_userinfo_t *info; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
3467 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
3468 | gc = sess->aux_data; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
3469 | account = gaim_connection_get_account(gc); |
|
11973
42a29ebcf30b
[gaim-migrate @ 14266]
Mark Doliner <markdoliner@pidgin.im>
parents:
11965
diff
changeset
|
3470 | presence = gaim_account_get_presence(account); |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
3471 | od = gc->proto_data; |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3472 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3473 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3474 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 3475 | va_end(ap); |
|
11973
42a29ebcf30b
[gaim-migrate @ 14266]
Mark Doliner <markdoliner@pidgin.im>
parents:
11965
diff
changeset
|
3476 | |
|
10130
7256fb884aaf
[gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents:
10116
diff
changeset
|
3477 | g_return_val_if_fail(info != NULL, 1); |
|
7256fb884aaf
[gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents:
10116
diff
changeset
|
3478 | g_return_val_if_fail(info->sn != NULL, 1); |
|
7256fb884aaf
[gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents:
10116
diff
changeset
|
3479 | |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
3480 | if (info->present & AIM_USERINFO_PRESENT_FLAGS) { |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
3481 | if (info->flags & AIM_FLAG_AWAY) |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3482 | buddy_is_away = TRUE; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3483 | } |
| 2993 | 3484 | if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) { |
|
11510
8f618fb35bd3
[gaim-migrate @ 13755]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11495
diff
changeset
|
3485 | type = info->icqinfo.status; |
| 3013 | 3486 | if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT) && |
| 3487 | (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) { | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
3488 | buddy_is_away = TRUE; |
| 3013 | 3489 | } |
| 2993 | 3490 | } |
| 3491 | ||
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3492 | if (aim_sn_is_icq(info->sn)) { |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3493 | if (type & AIM_ICQ_STATE_CHAT) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3494 | status_id = OSCAR_STATUS_ID_FREE4CHAT; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3495 | else if (type & AIM_ICQ_STATE_DND) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3496 | status_id = OSCAR_STATUS_ID_DND; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3497 | else if (type & AIM_ICQ_STATE_OUT) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3498 | status_id = OSCAR_STATUS_ID_NA; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3499 | else if (type & AIM_ICQ_STATE_BUSY) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3500 | status_id = OSCAR_STATUS_ID_OCCUPIED; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3501 | else if (type & AIM_ICQ_STATE_AWAY) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3502 | status_id = OSCAR_STATUS_ID_AWAY; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3503 | else if (type & AIM_ICQ_STATE_INVISIBLE) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3504 | status_id = OSCAR_STATUS_ID_INVISIBLE; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3505 | else |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3506 | status_id = OSCAR_STATUS_ID_AVAILABLE; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3507 | } else { |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3508 | if (buddy_is_away == TRUE) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3509 | status_id = OSCAR_STATUS_ID_AWAY; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3510 | else |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3511 | status_id = OSCAR_STATUS_ID_AVAILABLE; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3512 | } |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3513 | |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3514 | /* |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3515 | * Handle the available message. If info->status is NULL then the user |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3516 | * may or may not have an available message, so don't do anything. If |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3517 | * info->status is set to the empty string, then the user's client DOES |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3518 | * support available messages and the user DOES NOT have one set. |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3519 | * Otherwise info->status contains the available message. |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3520 | */ |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3521 | if (info->status != NULL) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3522 | { |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3523 | have_status_message = TRUE; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3524 | if (info->status[0] != '\0') |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3525 | message = oscar_encoding_to_utf8(info->status_encoding, |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3526 | info->status, info->status_len); |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3527 | } |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3528 | |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3529 | if (have_status_message) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3530 | { |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3531 | gaim_prpl_got_user_status(account, info->sn, status_id, |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3532 | "message", message, NULL); |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3533 | g_free(message); |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3534 | } |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3535 | else |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3536 | gaim_prpl_got_user_status(account, info->sn, status_id, NULL); |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3537 | |
|
12350
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
3538 | /* Login time stuff */ |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
3539 | if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE) |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
3540 | signon = info->onlinesince; |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
3541 | else if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN) |
| 2993 | 3542 | signon = time(NULL) - info->sessionlen; |
|
10567
87b02dd40349
[gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10565
diff
changeset
|
3543 | if (!aim_sncmp(gaim_account_get_username(account), info->sn)) { |
| 5575 | 3544 | gaim_connection_set_display_name(gc, info->sn); |
|
11973
42a29ebcf30b
[gaim-migrate @ 14266]
Mark Doliner <markdoliner@pidgin.im>
parents:
11965
diff
changeset
|
3545 | od->timeoffset = signon - gaim_presence_get_login_time(presence); |
|
10567
87b02dd40349
[gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10565
diff
changeset
|
3546 | } |
|
12350
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
3547 | gaim_prpl_got_user_login_time(account, info->sn, signon - od->timeoffset); |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
3548 | |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
3549 | /* Idle time stuff */ |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
3550 | /* info->idletime is the number of minutes that this user has been idle */ |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
3551 | if (info->present & AIM_USERINFO_PRESENT_IDLE) |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
3552 | time_idle = time(NULL) - info->idletime * 60; |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
3553 | |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
3554 | if (time_idle > 0) |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
3555 | gaim_prpl_got_user_idle(account, info->sn, TRUE, time_idle); |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
3556 | else |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
3557 | gaim_prpl_got_user_idle(account, info->sn, FALSE, 0); |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
3558 | |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
3559 | /* Server stored icon stuff */ |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
3560 | bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, info->sn)); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3561 | if (!bi) { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3562 | bi = g_new0(struct buddyinfo, 1); |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
3563 | g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(account, info->sn)), bi); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3564 | } |
|
4739
7263e3ceab43
[gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents:
4738
diff
changeset
|
3565 | bi->typingnot = FALSE; |
|
7263e3ceab43
[gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents:
4738
diff
changeset
|
3566 | bi->ico_informed = FALSE; |
| 6857 | 3567 | bi->ipaddr = info->icqinfo.ipaddr; |
| 3568 | ||
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3569 | if (info->iconcsumlen) { |
| 7125 | 3570 | const char *filename = NULL, *saved_b16 = NULL; |
|
9801
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
3571 | char *b16 = NULL, *filepath = NULL; |
|
7093
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
3572 | GaimBuddy *b = NULL; |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3573 | |
|
7106
eaeff5775818
[gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents:
7098
diff
changeset
|
3574 | b16 = gaim_base16_encode(info->iconcsum, info->iconcsumlen); |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
3575 | b = gaim_find_buddy(account, info->sn); |
|
7093
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
3576 | /* |
|
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
3577 | * If for some reason the checksum is valid, but cached file is not.. |
|
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
3578 | * we want to know. |
|
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
3579 | */ |
| 7693 | 3580 | filename = gaim_blist_node_get_string((GaimBlistNode*)b, "buddy_icon"); |
|
7093
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
3581 | if (filename != NULL) { |
|
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
3582 | if (g_file_test(filename, G_FILE_TEST_EXISTS)) |
| 7693 | 3583 | saved_b16 = gaim_blist_node_get_string((GaimBlistNode*)b, |
| 3584 | "icon_checksum"); | |
|
9801
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
3585 | else { |
|
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
3586 | filepath = g_build_filename(gaim_buddy_icons_get_cache_dir(), |
|
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
3587 | filename, NULL); |
|
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
3588 | if (g_file_test(filepath, G_FILE_TEST_EXISTS)) |
|
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
3589 | saved_b16 = gaim_blist_node_get_string((GaimBlistNode*)b, |
|
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
3590 | "icon_checksum"); |
|
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
3591 | g_free(filepath); |
|
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
3592 | } |
|
7093
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
3593 | } else |
|
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
3594 | saved_b16 = NULL; |
|
7054
b3509b4108e9
[gaim-migrate @ 7617]
Herman Bloggs <herman@bluedigits.com>
parents:
7045
diff
changeset
|
3595 | |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3596 | if (!b16 || !saved_b16 || strcmp(b16, saved_b16)) { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3597 | GSList *cur = od->requesticon; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3598 | while (cur && aim_sncmp((char *)cur->data, info->sn)) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3599 | cur = cur->next; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3600 | if (!cur) { |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
3601 | od->requesticon = g_slist_append(od->requesticon, g_strdup(gaim_normalize(account, info->sn))); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3602 | if (od->icontimer) |
| 8287 | 3603 | gaim_timeout_remove(od->icontimer); |
| 8273 | 3604 | od->icontimer = gaim_timeout_add(500, gaim_icon_timerfunc, gc); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3605 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3606 | } |
| 6053 | 3607 | g_free(b16); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3608 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3609 | |
| 2086 | 3610 | return 1; |
| 3611 | } | |
| 3612 | ||
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
3613 | static void gaim_check_comment(OscarData *od, const char *str) { |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
3614 | if ((str == NULL) || strcmp(str, (const char *)ck)) |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
3615 | aim_locate_setcaps(od->sess, caps_aim); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
3616 | else |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
3617 | aim_locate_setcaps(od->sess, caps_aim | AIM_CAPS_SECUREIM); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
3618 | } |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
3619 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3620 | static int gaim_parse_offgoing(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3621 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3622 | OscarData *od = gc->proto_data; |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
3623 | GaimAccount *account = gaim_connection_get_account(gc); |
| 2086 | 3624 | va_list ap; |
|
4739
7263e3ceab43
[gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents:
4738
diff
changeset
|
3625 | aim_userinfo_t *info; |
| 2086 | 3626 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3627 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3628 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 3629 | va_end(ap); |
| 3630 | ||
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3631 | gaim_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_OFFLINE, NULL); |
| 2086 | 3632 | |
| 7261 | 3633 | g_hash_table_remove(od->buddyinfo, gaim_normalize(gc->account, info->sn)); |
|
5837
e75d4061396e
[gaim-migrate @ 6268]
Mark Doliner <markdoliner@pidgin.im>
parents:
5836
diff
changeset
|
3634 | |
| 2086 | 3635 | return 1; |
| 3636 | } | |
| 3637 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3638 | /* BBB */ |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
3639 | /* |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3640 | * This is called after a remote AIM user has connected to us. |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3641 | * If not using a rendezvous proxy, then we want to do some |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3642 | * voodoo with the socket file descriptors. Then we always |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3643 | * add a 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
|
3644 | */ |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3645 | static int oscar_sendfile_estblsh(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3646 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3647 | OscarData *od = (OscarData *)gc->proto_data; |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
3648 | GaimXfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3649 | struct aim_oft_info *oft_info; |
| 3630 | 3650 | va_list ap; |
| 3651 | aim_conn_t *conn, *listenerconn; | |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3652 | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3653 | gaim_debug_info("oscar", "AAA - in oscar_sendfile_estblsh\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3654 | |
| 3630 | 3655 | va_start(ap, fr); |
| 3656 | conn = va_arg(ap, aim_conn_t *); | |
| 3657 | listenerconn = va_arg(ap, aim_conn_t *); | |
| 3658 | va_end(ap); | |
| 3659 | ||
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3660 | /* Finding by conn will work for proxied connections only |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3661 | * Finding by listenerconn will work for direct connections only */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3662 | if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn))) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3663 | if(!(xfer = oscar_find_xfer_by_conn(od->file_transfers, listenerconn))) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3664 | gaim_debug_warning("oscar","xfer not found via connection\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3665 | return 1; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3666 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3667 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3668 | if (!(oft_info = xfer->data)) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3669 | gaim_debug_warning("oscar","NULL data\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3670 | return 1; |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3671 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3672 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3673 | /* Mark connection as success so further connections aren't attempted |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3674 | * This is important here since some receive file code paths pass through here */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3675 | oft_info->success = TRUE; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3676 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3677 | if(oft_info->method != AIM_XFER_PROXY) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3678 | /* Stop watching listener conn; watch transfer conn instead */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3679 | gaim_input_remove(xfer->watcher); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3680 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3681 | aim_conn_kill(sess, &listenerconn); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3682 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3683 | oft_info->conn = conn; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3684 | xfer->fd = oft_info->conn->fd; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3685 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3686 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3687 | xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3688 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3689 | if(oft_info->send_or_recv == AIM_XFER_SEND) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3690 | aim_conn_addhandler(oft_info->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ACK, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3691 | oscar_sendfile_ack, 0); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3692 | aim_conn_addhandler(oft_info->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DONE, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3693 | oscar_sendfile_done, 0); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3694 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3695 | /* Inform the other user that we are connected and ready to transfer */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3696 | aim_oft_sendheader(sess, AIM_CB_OFT_PROMPT, oft_info); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3697 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3698 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3699 | /* For a file send, we'll hopefully end up in oscar_sendfile_ack next |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3700 | * For a file receive, oscar_sendfile_prompt */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3701 | |
| 3630 | 3702 | return 0; |
| 3703 | } | |
| 3704 | ||
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
3705 | /* |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
3706 | * This is the gaim callback passed to gaim_proxy_connect when connecting to another AIM |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3707 | * user in order to transfer a file |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3708 | * Takes xfer as data and fd as source |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3709 | * BBB |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
3710 | */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3711 | static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition) { |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
3712 | GaimXfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3713 | struct aim_oft_info *oft_info; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3714 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3715 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3716 | "AAA - in oscar_sendfile_connected\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3717 | if (!(xfer = data)) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3718 | return; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3719 | if (!(oft_info = xfer->data)) |
| 3630 | 3720 | return; |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3721 | if(oft_info->success) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3722 | gaim_debug_info("oscar","connection already successful; ignoring 2nd conn\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3723 | return; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3724 | } |
| 8446 | 3725 | if (source < 0) { |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3726 | gaim_debug_info("oscar","received fd of %d; aborting transfer\n", source); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3727 | gaim_xfer_cancel_remote(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3728 | return; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3729 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3730 | oft_info->success = TRUE; /* Mark this connection as successful before it times out */ |
|
11214
253372056e12
[gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11185
diff
changeset
|
3731 | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3732 | /* We might have already set these in oscar_sendfile_proxylogin, but it won't |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3733 | * hurt to do it again since it is rather necessary */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3734 | xfer->fd = source; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3735 | oft_info->conn->fd = source; |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3736 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3737 | aim_conn_completeconnect(oft_info->sess, oft_info->conn); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3738 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3739 | 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
|
3740 | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3741 | /* Inform the other user that we are connected and accept the transfer |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3742 | * Except for a stage 2 receive, then we'll be the ones receiving this accept message */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3743 | if(oft_info->stage != AIM_XFER_PROXY_STG2) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3744 | aim_im_sendch2_sendfile_accept(oft_info->sess, oft_info); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3745 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3746 | /* Don't wait around if this is a redirected send */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3747 | if(oft_info->send_or_recv == AIM_XFER_SEND) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3748 | /* We should only get here if this is a redirected file send */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3749 | aim_conn_addhandler(oft_info->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ACK, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3750 | oscar_sendfile_ack, 0); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3751 | aim_conn_addhandler(oft_info->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DONE, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3752 | oscar_sendfile_done, 0); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3753 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3754 | /* Inform the other user that we are ready to transfer */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3755 | aim_oft_sendheader(oft_info->sess, AIM_CB_OFT_PROMPT, oft_info); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3756 | } |
| 3630 | 3757 | } |
| 3758 | ||
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
3759 | /* |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3760 | * 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
|
3761 | * 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
|
3762 | * 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
|
3763 | * get like totally ready to like, receive the file, kay? |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
3764 | */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3765 | static int oscar_sendfile_prompt(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3766 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3767 | OscarData *od = gc->proto_data; |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
3768 | GaimXfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3769 | struct aim_oft_info *oft_info; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3770 | va_list ap; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3771 | aim_conn_t *conn; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3772 | fu8_t *cookie; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3773 | struct aim_fileheader_t *fh; |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3774 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3775 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3776 | "AAA - in oscar_sendfile_prompt\n"); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3777 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3778 | va_start(ap, fr); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3779 | conn = va_arg(ap, aim_conn_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3780 | cookie = va_arg(ap, fu8_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3781 | fh = va_arg(ap, struct aim_fileheader_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3782 | va_end(ap); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3783 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3784 | if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn))) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3785 | return 1; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3786 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3787 | if (!(oft_info = xfer->data)) |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3788 | return 1; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3789 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3790 | /* We want to stop listening with a normal thingy */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3791 | gaim_input_remove(xfer->watcher); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3792 | xfer->watcher = 0; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3793 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3794 | /* They sent us some information about the file they're sending */ |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3795 | memcpy(&oft_info->fh, fh, sizeof(*fh)); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3796 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3797 | /* Fill in the cookie */ |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3798 | memcpy(&oft_info->fh.bcookie, oft_info->cookie, 8); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3799 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3800 | /* 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
|
3801 | 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
|
3802 | gaim_xfer_start(xfer, xfer->fd, NULL, 0); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3803 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3804 | return 0; |
| 3630 | 3805 | } |
| 3806 | ||
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
3807 | /* |
|
4657
24c70a9dec22
[gaim-migrate @ 4968]
Mark Doliner <markdoliner@pidgin.im>
parents:
4656
diff
changeset
|
3808 | * 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
|
3809 | * 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
|
3810 | */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3811 | static int oscar_sendfile_ack(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3812 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3813 | OscarData *od = gc->proto_data; |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
3814 | GaimXfer *xfer; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3815 | va_list ap; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3816 | aim_conn_t *conn; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3817 | fu8_t *cookie; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3818 | struct aim_fileheader_t *fh; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3819 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3820 | gaim_debug_info("oscar", "AAA - in oscar_sendfile_ack\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3821 | va_start(ap, fr); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3822 | conn = va_arg(ap, aim_conn_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3823 | cookie = va_arg(ap, fu8_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3824 | fh = va_arg(ap, struct aim_fileheader_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3825 | va_end(ap); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3826 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3827 | if (!(xfer = oscar_find_xfer_by_cookie(od->file_transfers, cookie))) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3828 | return 1; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3829 | |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3830 | /* We want to stop listening with a normal thingy */ |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3831 | gaim_input_remove(xfer->watcher); |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3832 | xfer->watcher = 0; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3833 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3834 | gaim_xfer_start(xfer, xfer->fd, NULL, 0); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3835 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3836 | return 0; |
| 3630 | 3837 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3838 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3839 | /* |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3840 | * 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
|
3841 | * so we can close our direct connection and what not. |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3842 | */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3843 | static int oscar_sendfile_done(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3844 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3845 | OscarData *od = gc->proto_data; |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
3846 | GaimXfer *xfer; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3847 | va_list ap; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3848 | aim_conn_t *conn; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3849 | fu8_t *cookie; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3850 | struct aim_fileheader_t *fh; |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3851 | struct aim_oft_info *oft_info; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3852 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3853 | gaim_debug_info("oscar", "AAA - in oscar_sendfile_done\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3854 | va_start(ap, fr); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3855 | conn = va_arg(ap, aim_conn_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3856 | cookie = va_arg(ap, fu8_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3857 | fh = va_arg(ap, struct aim_fileheader_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3858 | va_end(ap); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3859 | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3860 | if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn))) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3861 | gaim_debug_warning("oscar","xfer not found\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3862 | return 1; |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3863 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3864 | if(!(oft_info = xfer->data)) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3865 | gaim_debug_warning("oscar","NULL oft_info\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3866 | return 1; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3867 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3868 | if(fh->nrecvd == fh->size) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3869 | gaim_xfer_set_completed(xfer, TRUE); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3870 | |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3871 | xfer->fd = conn->fd; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3872 | gaim_xfer_end(xfer); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3873 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3874 | return 0; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3875 | } |
| 3630 | 3876 | |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3877 | static int incomingim_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch1_args *args) { |
| 5575 | 3878 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3879 | OscarData *od = gc->proto_data; |
|
8708
31a7bd5a32f4
[gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents:
8701
diff
changeset
|
3880 | GaimAccount *account = gaim_connection_get_account(gc); |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12189
diff
changeset
|
3881 | GaimMessageFlags flags = 0; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3882 | struct buddyinfo *bi; |
|
11303
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
3883 | char *iconfile; |
|
9806
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3884 | GString *message; |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3885 | gchar *tmp; |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3886 | aim_mpmsg_section_t *curpart; |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3887 | |
|
11537
1628dff8c1ea
[gaim-migrate @ 13791]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11533
diff
changeset
|
3888 | gaim_debug_misc("oscar", "Received IM from %s with %d parts\n", |
|
9806
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3889 | userinfo->sn, args->mpmsg.numparts); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3890 | |
|
10595
1338add2b0b0
[gaim-migrate @ 12010]
Mark Doliner <markdoliner@pidgin.im>
parents:
10594
diff
changeset
|
3891 | if (args->mpmsg.numparts == 0) |
|
1338add2b0b0
[gaim-migrate @ 12010]
Mark Doliner <markdoliner@pidgin.im>
parents:
10594
diff
changeset
|
3892 | return 1; |
|
1338add2b0b0
[gaim-migrate @ 12010]
Mark Doliner <markdoliner@pidgin.im>
parents:
10594
diff
changeset
|
3893 | |
|
8708
31a7bd5a32f4
[gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents:
8701
diff
changeset
|
3894 | bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, userinfo->sn)); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3895 | if (!bi) { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3896 | bi = g_new0(struct buddyinfo, 1); |
|
8708
31a7bd5a32f4
[gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents:
8701
diff
changeset
|
3897 | g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(account, userinfo->sn)), bi); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3898 | } |
|
2273
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
3899 | |
|
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
3900 | if (args->icbmflags & AIM_IMFLAGS_AWAY) |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12189
diff
changeset
|
3901 | flags |= GAIM_MESSAGE_AUTO_RESP; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3902 | |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3903 | if (args->icbmflags & AIM_IMFLAGS_TYPINGNOT) |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3904 | bi->typingnot = TRUE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3905 | else |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3906 | bi->typingnot = FALSE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3907 | |
|
4380
c7c7beab8e56
[gaim-migrate @ 4646]
Mark Doliner <markdoliner@pidgin.im>
parents:
4374
diff
changeset
|
3908 | if ((args->icbmflags & AIM_IMFLAGS_HASICON) && (args->iconlen) && (args->iconsum) && (args->iconstamp)) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3909 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3910 | "%s has an icon\n", userinfo->sn); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3911 | 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
|
3912 | bi->ico_need = TRUE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3913 | bi->ico_len = args->iconlen; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3914 | bi->ico_csum = args->iconsum; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3915 | bi->ico_time = args->iconstamp; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3916 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3917 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3918 | |
|
11303
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
3919 | iconfile = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(account)); |
|
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
3920 | if ((iconfile != NULL) && |
| 7406 | 3921 | (args->icbmflags & AIM_IMFLAGS_BUDDYREQ) && !bi->ico_sent && bi->ico_informed) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3922 | FILE *file; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3923 | struct stat st; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3924 | |
|
10589
4e10236e06d4
[gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents:
10574
diff
changeset
|
3925 | if (!g_stat(iconfile, &st)) { |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
3926 | guchar *buf = g_malloc(st.st_size); |
|
10589
4e10236e06d4
[gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents:
10574
diff
changeset
|
3927 | file = g_fopen(iconfile, "rb"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3928 | if (file) { |
|
9532
32470c5a1d58
[gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
9481
diff
changeset
|
3929 | /* XXX - Use g_file_get_contents() */ |
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2597
diff
changeset
|
3930 | int len = fread(buf, 1, st.st_size, file); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3931 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3932 | "Sending buddy icon to %s (%d bytes, " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3933 | "%lu reported)\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3934 | userinfo->sn, len, st.st_size); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3935 | aim_im_sendch2_icon(sess, userinfo->sn, buf, st.st_size, |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3936 | st.st_mtime, aimutil_iconsum(buf, st.st_size)); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3937 | fclose(file); |
|
2336
43d65c408209
[gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
3938 | } else |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3939 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3940 | "Can't open buddy icon file!\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3941 | g_free(buf); |
|
2336
43d65c408209
[gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
3942 | } else |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3943 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3944 | "Can't stat buddy icon file!\n"); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3945 | } |
|
11303
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
3946 | g_free(iconfile); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3947 | |
|
9806
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3948 | message = g_string_new(""); |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3949 | curpart = args->mpmsg.parts; |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3950 | while (curpart != NULL) { |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
3951 | tmp = gaim_plugin_oscar_decode_im_part(account, userinfo->sn, curpart->charset, |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
3952 | - curpart->charsubset, curpart->data, curpart->datalen); |
|
9806
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3953 | if (tmp != NULL) { |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3954 | g_string_append(message, tmp); |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3955 | g_free(tmp); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3956 | } |
|
9806
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3957 | |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3958 | curpart = curpart->next; |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3959 | } |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3960 | tmp = g_string_free(message, FALSE); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3961 | |
|
8666
582a118d6b91
[gaim-migrate @ 9418]
Mark Doliner <markdoliner@pidgin.im>
parents:
8660
diff
changeset
|
3962 | /* |
|
10781
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
3963 | * If the message is from an ICQ user and to an ICQ user then escape any HTML, |
| 9016 | 3964 | * because HTML is not sent over ICQ as a means to format a message. |
|
10781
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
3965 | * So any HTML we receive is intended to be displayed. Also, \r\n must be |
|
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
3966 | * replaced with <br> |
| 8995 | 3967 | * |
| 3968 | * Note: There *may* be some clients which send messages as HTML formatted - | |
| 3969 | * they need to be special-cased somehow. | |
|
8666
582a118d6b91
[gaim-migrate @ 9418]
Mark Doliner <markdoliner@pidgin.im>
parents:
8660
diff
changeset
|
3970 | */ |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
3971 | if (aim_sn_is_icq(gaim_account_get_username(account)) && aim_sn_is_icq(userinfo->sn)) { |
| 8995 | 3972 | /* being recevied by ICQ from ICQ - escape HTML so it is displayed as sent */ |
|
10732
5e314ab498bf
[gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents:
10715
diff
changeset
|
3973 | gchar *tmp2 = g_markup_escape_text(tmp, -1); |
|
8493
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
3974 | g_free(tmp); |
|
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
3975 | tmp = tmp2; |
|
10783
566217565d70
[gaim-migrate @ 12412]
Mark Doliner <markdoliner@pidgin.im>
parents:
10781
diff
changeset
|
3976 | tmp2 = gaim_strreplace(tmp, "\r\n", "<br>"); |
|
10781
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
3977 | g_free(tmp); |
|
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
3978 | tmp = tmp2; |
|
8493
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
3979 | } |
|
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
3980 | |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6907
diff
changeset
|
3981 | serv_got_im(gc, userinfo->sn, tmp, flags, time(NULL)); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3982 | g_free(tmp); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3983 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3984 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3985 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3986 | |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3987 | static int incomingim_chan2(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch2_args *args) { |
| 9070 | 3988 | GaimConnection *gc; |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3989 | GaimAccount *account; |
| 9070 | 3990 | OscarData *od; |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3991 | const char *username = NULL; |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3992 | char *message = NULL; |
| 9070 | 3993 | |
| 3994 | g_return_val_if_fail(sess != NULL, 0); | |
| 3995 | g_return_val_if_fail(sess->aux_data != NULL, 0); | |
| 3996 | ||
| 3997 | gc = sess->aux_data; | |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3998 | account = gaim_connection_get_account(gc); |
| 9070 | 3999 | od = gc->proto_data; |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4000 | username = gaim_account_get_username(account); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4001 | |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4002 | if (args == NULL) |
| 4121 | 4003 | return 0; |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
4004 | |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4005 | gaim_debug_misc("oscar", "rendezvous with %s, status is %hu\n", |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4006 | userinfo->sn, args->status); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4007 | |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4008 | if (args->msg != NULL) |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4009 | { |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4010 | if (args->encoding != NULL) |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4011 | { |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4012 | char *encoding = NULL; |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4013 | encoding = oscar_encoding_extract(args->encoding); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4014 | message = oscar_encoding_to_utf8(encoding, args->msg, args->msglen); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4015 | g_free(encoding); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4016 | } else { |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4017 | if (g_utf8_validate(args->msg, args->msglen, NULL)) |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4018 | message = g_strdup(args->msg); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4019 | } |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4020 | } |
| 2869 | 4021 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4022 | if (args->reqclass & AIM_CAPS_CHAT) { |
| 4121 | 4023 | char *name; |
| 5234 | 4024 | GHashTable *components; |
| 4025 | ||
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4026 | if (!args->info.chat.roominfo.name || !args->info.chat.roominfo.exchange) { |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4027 | g_free(message); |
| 4121 | 4028 | return 1; |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4029 | } |
| 5234 | 4030 | components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, |
| 4031 | g_free); | |
| 4121 | 4032 | name = extract_name(args->info.chat.roominfo.name); |
| 5234 | 4033 | g_hash_table_replace(components, g_strdup("room"), g_strdup(name ? name : args->info.chat.roominfo.name)); |
| 4034 | 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
|
4035 | serv_got_chat_invite(gc, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4036 | name ? name : args->info.chat.roominfo.name, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4037 | userinfo->sn, |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4038 | message, |
| 5234 | 4039 | components); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4040 | if (name) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4041 | g_free(name); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4042 | } else if (args->reqclass & AIM_CAPS_SENDFILE) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4043 | /* BBB */ |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4044 | /* This is the first sendfile request where we need to notify the user that someone |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4045 | * wants to send a file */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4046 | if (args->status == AIM_RENDEZVOUS_PROPOSE |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4047 | && (args->info.sendfile.reqnum == 0x0001)) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4048 | /* Someone wants to send a file (or files) to us */ |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
4049 | GaimXfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
4050 | struct aim_oft_info *oft_info; |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4051 | struct aim_rv_proxy_info *proxy_info = NULL; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4052 | gboolean use_rv_proxy; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4053 | int proxy_stage; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4054 | int xfer_method; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4055 | const char *proxy_ip = NULL; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4056 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4057 | if (!args->cookie || !args->port || |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
4058 | !args->info.sendfile.filename || !args->info.sendfile.totsize || |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
4059 | !args->info.sendfile.totfiles || !args->reqclass) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4060 | gaim_debug_warning("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4061 | "%s tried to send you a file with incomplete " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4062 | "information.\n", userinfo->sn); |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4063 | g_free(message); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4064 | return 1; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
4065 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4066 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4067 | if (args->info.sendfile.subtype == AIM_OFT_SUBTYPE_SEND_DIR) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4068 | /* last char of the ft req is a star, they are sending us a |
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
8733
diff
changeset
|
4069 | * directory -- remove the star and trailing slash so we don't save |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4070 | * directories that look like 'dirname\*' -- arl */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4071 | char *tmp = strrchr(args->info.sendfile.filename, '\\'); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4072 | if (tmp && (tmp[1] == '*')) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4073 | tmp[0] = '\0'; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4074 | } |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4075 | gaim_debug_warning("oscar", |
| 8446 | 4076 | "We're receiving a whole directory! What fun! " |
| 4077 | "Especially since we don't support that!\n"); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4078 | } |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4079 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4080 | /* Build the file transfer handle */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4081 | xfer = gaim_xfer_new(gc->account, GAIM_XFER_RECEIVE, userinfo->sn); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4082 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4083 | use_rv_proxy = gaim_prefs_get_bool("/plugins/prpl/oscar/use_rv_proxy"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4084 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4085 | if(args->info.sendfile.use_proxy) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4086 | /* The sender requested (stage 1) that we use a rendezvous proxy */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4087 | xfer_method = AIM_XFER_PROXY; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4088 | proxy_stage = AIM_XFER_PROXY_STG1; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4089 | gaim_debug_info("oscar","using stage 1 proxy with ip: %s\n", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4090 | args->proxyip, args->port); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4091 | xfer->remote_ip = g_strdup(args->proxyip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4092 | xfer->remote_port = AIM_RV_PROXY_CONNECT_PORT; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4093 | proxy_info = aim_rv_proxy_createinfo(od->sess, args->cookie, args->port); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4094 | } else if(use_rv_proxy) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4095 | /* If the local user indicated that a rendezvous proxy is necessary |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4096 | * start a stage 2 proxied transfer */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4097 | gaim_debug_info("oscar","using stage 2 proxied transfer\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4098 | xfer_method = AIM_XFER_PROXY; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4099 | proxy_stage = AIM_XFER_PROXY_STG2; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4100 | /* This hostname will be resolved by gaim_proxy_connect */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4101 | xfer->remote_ip = g_strdup(AIM_RV_PROXY_SERVER_URL); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4102 | xfer->remote_port = AIM_RV_PROXY_CONNECT_PORT; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4103 | proxy_info = aim_rv_proxy_createinfo(od->sess, args->cookie, 0); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4104 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4105 | /* We are receiving a file directly with no rendezvous proxy */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4106 | xfer_method = AIM_XFER_DIRECT; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4107 | proxy_stage = AIM_XFER_PROXY_NONE; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4108 | xfer->remote_ip = g_strdup(args->clientip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4109 | xfer->remote_port = args->port; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4110 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4111 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4112 | /* Use UTF8 so that the world will be a happier place */ |
|
11238
f1c41064d875
[gaim-migrate @ 13389]
Mark Doliner <markdoliner@pidgin.im>
parents:
11214
diff
changeset
|
4113 | if (g_utf8_validate(args->info.sendfile.filename, -1, |
|
f1c41064d875
[gaim-migrate @ 13389]
Mark Doliner <markdoliner@pidgin.im>
parents:
11214
diff
changeset
|
4114 | NULL)) { |
|
f1c41064d875
[gaim-migrate @ 13389]
Mark Doliner <markdoliner@pidgin.im>
parents:
11214
diff
changeset
|
4115 | gaim_xfer_set_filename(xfer, |
|
f1c41064d875
[gaim-migrate @ 13389]
Mark Doliner <markdoliner@pidgin.im>
parents:
11214
diff
changeset
|
4116 | args->info.sendfile.filename); |
|
f1c41064d875
[gaim-migrate @ 13389]
Mark Doliner <markdoliner@pidgin.im>
parents:
11214
diff
changeset
|
4117 | } else { |
|
f1c41064d875
[gaim-migrate @ 13389]
Mark Doliner <markdoliner@pidgin.im>
parents:
11214
diff
changeset
|
4118 | gchar * utf8_filename = gaim_utf8_salvage( |
|
f1c41064d875
[gaim-migrate @ 13389]
Mark Doliner <markdoliner@pidgin.im>
parents:
11214
diff
changeset
|
4119 | args->info.sendfile.filename); |
|
f1c41064d875
[gaim-migrate @ 13389]
Mark Doliner <markdoliner@pidgin.im>
parents:
11214
diff
changeset
|
4120 | gaim_xfer_set_filename(xfer, utf8_filename); |
|
f1c41064d875
[gaim-migrate @ 13389]
Mark Doliner <markdoliner@pidgin.im>
parents:
11214
diff
changeset
|
4121 | g_free(utf8_filename); |
|
f1c41064d875
[gaim-migrate @ 13389]
Mark Doliner <markdoliner@pidgin.im>
parents:
11214
diff
changeset
|
4122 | } |
|
f1c41064d875
[gaim-migrate @ 13389]
Mark Doliner <markdoliner@pidgin.im>
parents:
11214
diff
changeset
|
4123 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4124 | gaim_xfer_set_size(xfer, args->info.sendfile.totsize); |
|
11084
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
4125 | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4126 | /* Ignore messages that start with <ICQ_COOL_FT> (XML that is sent along |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4127 | * with ICQ sendfile requests) & <HTML> message that is sent with AOL file |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4128 | * transfers (Note: this latter message is ignored only if whole message |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4129 | * is <HTML>, but not if it starts with <HTML> */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4130 | if(message && ( g_ascii_strncasecmp(message,"<ICQ_COOL_FT>",13) < 0 |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4131 | || g_ascii_strcasecmp(message,"<HTML>") == 0) ) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4132 | gaim_debug_info("oscar","Ignoring file transfer message: %s\n", message); |
|
11084
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
4133 | g_free(message); |
|
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
4134 | message = NULL; |
|
b6acee973833
[gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11081
diff
changeset
|
4135 | } |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4136 | gaim_xfer_set_message(xfer, message); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
4137 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
4138 | /* Create the oscar-specific data */ |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4139 | oft_info = aim_oft_createinfo(od->sess, args->cookie, userinfo->sn, args->clientip, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4140 | xfer->remote_port, 0, 0, NULL, AIM_XFER_RECV, xfer_method, proxy_stage); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4141 | if(proxy_stage == AIM_XFER_PROXY_STG2 && proxy_ip) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4142 | oft_info->proxyip = g_strdup(proxy_ip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4143 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4144 | if (args->proxyip) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4145 | oft_info->proxyip = g_strdup(args->proxyip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4146 | if (args->verifiedip) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4147 | oft_info->verifiedip = g_strdup(args->verifiedip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4148 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4149 | oft_info->proxy_info = proxy_info; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
4150 | xfer->data = oft_info; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4151 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4152 | /* Setup our I/O op functions */ |
| 8446 | 4153 | gaim_xfer_set_init_fnc(xfer, oscar_xfer_init_recv); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4154 | gaim_xfer_set_end_fnc(xfer, oscar_xfer_end); |
| 8446 | 4155 | gaim_xfer_set_request_denied_fnc(xfer, oscar_xfer_cancel_recv); |
|
4675
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
4156 | gaim_xfer_set_cancel_recv_fnc(xfer, oscar_xfer_cancel_recv); |
| 8446 | 4157 | gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack_recv); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4158 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4159 | /* Keep track of this transfer for later */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4160 | od->file_transfers = g_slist_append(od->file_transfers, xfer); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4161 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4162 | /* Now perform the request */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4163 | gaim_xfer_request(xfer); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4164 | /* A secondary request has been sent to negotiate the connection method */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4165 | } else if (args->status == AIM_RENDEZVOUS_PROPOSE && args->info.sendfile.reqnum == 0x0002) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4166 | /* We have asked to send a file to someone else, but they sent us a reply request |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4167 | * asking us to use an alternative method of connecting */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4168 | GaimXfer *xfer; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4169 | struct aim_oft_info *oft_info; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4170 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4171 | if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, args->cookie))) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4172 | oft_info = xfer->data; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4173 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4174 | /* Stop the listener connection */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4175 | gaim_input_remove(xfer->watcher); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4176 | aim_conn_kill(sess, &oft_info->conn); /* This is currently the listener */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4177 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4178 | if(args->info.sendfile.use_proxy) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4179 | gaim_debug_info("oscar", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4180 | "received request for stage 2 rv proxy with ip: %s\n", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4181 | args->proxyip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4182 | oft_info->method = AIM_XFER_PROXY; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4183 | oft_info->stage = AIM_XFER_PROXY_STG2; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4184 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4185 | oft_info->proxy_info = aim_rv_proxy_createinfo(oft_info->sess, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4186 | args->cookie, args->port); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4187 | if(args->proxyip) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4188 | if(xfer->remote_ip) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4189 | g_free(xfer->remote_ip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4190 | xfer->remote_ip = g_strdup(args->proxyip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4191 | xfer->remote_port = AIM_RV_PROXY_CONNECT_PORT; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4192 | oscar_xfer_init_recv(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4193 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4194 | gaim_debug_warning("oscar", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4195 | "stage 2 rv proxy file send: no proxy ip specified\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4196 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4197 | } else if(args->clientip |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4198 | && g_ascii_strcasecmp(args->clientip,"0.0.0.0") == 0) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4199 | { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4200 | gaim_debug_warning("oscar", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4201 | "other client wants us to send stage 3 proxy info\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4202 | oft_info->method = AIM_XFER_PROXY; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4203 | oft_info->stage = AIM_XFER_PROXY_STG3; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4204 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4205 | /* Clean useless data from oft_info */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4206 | oft_info->clientip = NULL; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4207 | oft_info->verifiedip = NULL; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4208 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4209 | /* This hostname will be resolved in gaim_proxy_connect */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4210 | xfer->remote_ip = g_strdup(AIM_RV_PROXY_SERVER_URL); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4211 | xfer->remote_port = AIM_RV_PROXY_CONNECT_PORT; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4212 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4213 | oft_info->proxy_info |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4214 | = aim_rv_proxy_createinfo(od->sess, args->cookie, 0); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4215 | oscar_xfer_init_recv(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4216 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4217 | gaim_debug_info("oscar","received request to redirect transfer; clientip/verifiedip: %s / %s\n", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4218 | args->clientip, args->verifiedip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4219 | oft_info->method = AIM_XFER_REDIR; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4220 | if (args->verifiedip) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4221 | oft_info->verifiedip = g_strdup(args->verifiedip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4222 | if (args->clientip) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4223 | oft_info->clientip = g_strdup(args->clientip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4224 | xfer->remote_ip = g_strdup(args->clientip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4225 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4226 | xfer->remote_port = args->port; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4227 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4228 | /* This file send will briefly follow file receive codepaths */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4229 | oscar_xfer_init_recv(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4230 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4231 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4232 | gaim_debug_warning("oscar","received file tranfer reply request: xfer not found\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4233 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4234 | /* A THIRD request has been sent trying to figure out what connection method will be used |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4235 | * to transfer this file */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4236 | } else if (args->status == AIM_RENDEZVOUS_PROPOSE && args->info.sendfile.reqnum == 0x0003) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4237 | /* We are receiving a file from someone. We sent a request to use a stage 3 |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4238 | * proxy. They did the initial proxy login and have sent us the info in a |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4239 | * third file transfer request. */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4240 | GaimXfer *xfer; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4241 | struct aim_oft_info *oft_info; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4242 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4243 | if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, args->cookie))) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4244 | oft_info = xfer->data; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4245 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4246 | /* We are receiving a file */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4247 | gaim_debug_info("oscar", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4248 | "other client sent us stage 3 proxy info\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4249 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4250 | /* The following pieces of information should already have |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4251 | * been set in oscar_xfer_ip_timeout, but we'll list them |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4252 | * again just for clarity. */ |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4253 | oft_info->method = AIM_XFER_PROXY; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4254 | oft_info->stage = AIM_XFER_PROXY_STG3; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4255 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4256 | oft_info->proxy_info = aim_rv_proxy_createinfo(oft_info->sess, |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4257 | args->cookie, args->port); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4258 | if(args->proxyip) { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4259 | if(xfer->remote_ip) |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4260 | g_free(xfer->remote_ip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4261 | xfer->remote_ip = g_strdup(args->proxyip); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4262 | xfer->remote_port = AIM_RV_PROXY_CONNECT_PORT; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4263 | oscar_xfer_init_recv(xfer); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4264 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4265 | gaim_debug_warning("oscar", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4266 | "stage 3 rv proxy file receive: no proxy ip specified\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4267 | } |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4268 | } else { |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4269 | gaim_debug_warning("oscar","received file tranfer reply request: xfer not found\n"); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4270 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4271 | } else if (args->status == AIM_RENDEZVOUS_CANCEL) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4272 | /* The other user wants to cancel a file transfer */ |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
4273 | GaimXfer *xfer; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4274 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4275 | "AAA - File transfer canceled by remote user\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4276 | 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
|
4277 | gaim_xfer_cancel_remote(xfer); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4278 | } else if (args->status == AIM_RENDEZVOUS_ACCEPT) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4279 | /* |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4280 | * This gets sent by the receiver of a file |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4281 | * as they connect directly to us. If we don't |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4282 | * get this, then maybe a third party connected |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4283 | * to us, and we shouldn't send them anything. |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4284 | */ |
|
11214
253372056e12
[gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11185
diff
changeset
|
4285 | gaim_debug_info("oscar", |
|
253372056e12
[gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11185
diff
changeset
|
4286 | "AAA - received chan 2 AIM_RENDEZVOUS_ACCEPT; ignoring\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4287 | } else { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4288 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4289 | "unknown rendezvous status!\n"); |
| 3630 | 4290 | } |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4291 | } else if (args->reqclass & AIM_CAPS_GETFILE) { |
|
8092
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
4292 | } else if (args->reqclass & AIM_CAPS_TALK) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4293 | } else if (args->reqclass & AIM_CAPS_BUDDYICON) { |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4294 | gaim_buddy_icons_set_for_user(account, userinfo->sn, |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4295 | args->info.icon.icon, |
|
6846
f814f02dca87
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
4296 | args->info.icon.length); |
|
6871
ff864e84ca84
[gaim-migrate @ 7417]
Mark Doliner <markdoliner@pidgin.im>
parents:
6857
diff
changeset
|
4297 | } else if (args->reqclass & AIM_CAPS_DIRECTIM) { |
| 8971 | 4298 | /* Consider moving all this into a helper func in the direct im block way up there */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4299 | struct ask_direct *d = g_new0(struct ask_direct, 1); |
| 8971 | 4300 | struct oscar_direct_im *dim = oscar_direct_im_find(od, userinfo->sn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4301 | char buf[256]; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4302 | |
| 4212 | 4303 | if (!args->verifiedip) { |
| 8983 | 4304 | /* TODO: do something about this, after figuring out what it means */ |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4305 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4306 | "directim kill blocked (%s)\n", userinfo->sn); |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4307 | g_free(message); |
|
4650
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4649
diff
changeset
|
4308 | return 1; |
| 4212 | 4309 | } |
| 4310 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4311 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4312 | "%s received direct im request from %s (%s)\n", |
|
10594
0bd48ee450c8
[gaim-migrate @ 12009]
Mark Doliner <markdoliner@pidgin.im>
parents:
10589
diff
changeset
|
4313 | username, userinfo->sn, args->verifiedip); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4314 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4315 | d->gc = gc; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4316 | d->sn = g_strdup(userinfo->sn); |
| 8983 | 4317 | /* Let's use the clientip here, because I think that's what AIM does. |
| 4318 | * Besides, if the clientip is wrong, we'll probably timeout faster, | |
| 4319 | * and then ask them to connect to us. */ | |
|
10594
0bd48ee450c8
[gaim-migrate @ 12009]
Mark Doliner <markdoliner@pidgin.im>
parents:
10589
diff
changeset
|
4320 | /* |
|
0bd48ee450c8
[gaim-migrate @ 12009]
Mark Doliner <markdoliner@pidgin.im>
parents:
10589
diff
changeset
|
4321 | * I disagree, let's use the verifiedip. I think AIM tries the |
|
0bd48ee450c8
[gaim-migrate @ 12009]
Mark Doliner <markdoliner@pidgin.im>
parents:
10589
diff
changeset
|
4322 | * verified IP first, then tries the client IP if that fails. In |
|
0bd48ee450c8
[gaim-migrate @ 12009]
Mark Doliner <markdoliner@pidgin.im>
parents:
10589
diff
changeset
|
4323 | * any case, there's a better chance the verified IP will be correct. |
|
0bd48ee450c8
[gaim-migrate @ 12009]
Mark Doliner <markdoliner@pidgin.im>
parents:
10589
diff
changeset
|
4324 | * The client IP is what the other person _thinks_ their IP address |
|
0bd48ee450c8
[gaim-migrate @ 12009]
Mark Doliner <markdoliner@pidgin.im>
parents:
10589
diff
changeset
|
4325 | * is. The verified IP is the address that the AIM server sees the |
|
0bd48ee450c8
[gaim-migrate @ 12009]
Mark Doliner <markdoliner@pidgin.im>
parents:
10589
diff
changeset
|
4326 | * other person using. |
|
0bd48ee450c8
[gaim-migrate @ 12009]
Mark Doliner <markdoliner@pidgin.im>
parents:
10589
diff
changeset
|
4327 | */ |
|
0bd48ee450c8
[gaim-migrate @ 12009]
Mark Doliner <markdoliner@pidgin.im>
parents:
10589
diff
changeset
|
4328 | snprintf(d->ip, sizeof(d->ip), "%s:%d", args->verifiedip, args->port?args->port:5190); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4329 | memcpy(d->cookie, args->cookie, 8); |
| 9070 | 4330 | if (dim && !dim->connected && aim_odc_getcookie(dim->conn) && args->cookie && |
| 4331 | (!memcmp(aim_odc_getcookie(dim->conn), args->cookie, 8))) { | |
| 4332 | ||
| 8971 | 4333 | oscar_direct_im_destroy(od, dim); |
| 8984 | 4334 | d->donttryagain = TRUE; |
| 8971 | 4335 | accept_direct_im_request(d); |
| 4336 | } else { | |
| 8983 | 4337 | if (dim && !dim->connected) |
| 8971 | 4338 | gaim_debug_warning("oscar", "DirectIM: received direct im request while " |
| 4339 | "already connected to that buddy!"); | |
| 5575 | 4340 | 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
|
4341 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4342 | gaim_request_action(gc, NULL, buf, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4343 | _("This requires a direct connection between " |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4344 | "the two computers and is necessary for IM " |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
4345 | "Images. Because your IP address will be " |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4346 | "revealed, this may be considered a privacy " |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4347 | "risk."), |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4348 | - GAIM_DEFAULT_ACTION_NONE, d, 2, |
| 8971 | 4349 | _("Connect"), G_CALLBACK(accept_direct_im_request), |
| 4350 | _("Cancel"), G_CALLBACK(destroy_direct_im_request)); | |
| 4351 | /* FIXME: we should actually send a packet on cancel */ | |
| 4352 | } | |
|
8708
31a7bd5a32f4
[gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents:
8701
diff
changeset
|
4353 | } else if (args->reqclass & AIM_CAPS_ICQSERVERRELAY) { |
|
31a7bd5a32f4
[gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents:
8701
diff
changeset
|
4354 | gaim_debug_error("oscar", "Got an ICQ Server Relay message of type %d\n", args->info.rtfmsg.msgtype); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4355 | } else { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4356 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4357 | "Unknown reqclass %hu\n", args->reqclass); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4358 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4359 | |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4360 | g_free(message); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
4361 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4362 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4363 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4364 | |
| 3453 | 4365 | /* |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4366 | * Authorization Functions |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4367 | * 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
|
4368 | * methods of authorization (SSI and old-school channel 4 ICBM) |
| 3453 | 4369 | */ |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4370 | /* When you ask other people for authorization */ |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4371 | static void gaim_auth_request(struct name_data *data, char *msg) { |
| 5575 | 4372 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
4373 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
4374 | if (g_list_find(gaim_connections_get_all(), gc)) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4375 | OscarData *od = gc->proto_data; |
| 6695 | 4376 | GaimBuddy *buddy = gaim_find_buddy(gc->account, data->name); |
| 12088 | 4377 | GaimGroup *group = gaim_buddy_get_group(buddy); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
4378 | if (buddy && group) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4379 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4380 | "ssi: adding buddy %s to group %s\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4381 | buddy->name, group->name); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4382 | 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
|
4383 | if (!aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY)) |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
4384 | aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_buddy_get_alias_only(buddy), NULL, NULL, 1); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
4385 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4386 | } |
|
4337
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
4387 | } |
|
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
4388 | |
|
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
4389 | static void gaim_auth_request_msgprompt(struct name_data *data) { |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
4390 | gaim_request_input(data->gc, NULL, _("Authorization Request Message:"), |
| 8697 | 4391 | NULL, _("Please authorize me!"), TRUE, FALSE, NULL, |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
4392 | _("OK"), G_CALLBACK(gaim_auth_request), |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
4393 | _("Cancel"), G_CALLBACK(oscar_free_name_data), |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
4394 | data); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4395 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4396 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4397 | static void gaim_auth_dontrequest(struct name_data *data) { |
| 5575 | 4398 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
4399 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
4400 | if (g_list_find(gaim_connections_get_all(), gc)) { |
|
8151
195a587b6c32
[gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents:
8150
diff
changeset
|
4401 | /* Remove from local list */ |
|
195a587b6c32
[gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents:
8150
diff
changeset
|
4402 | GaimBuddy *b = gaim_find_buddy(gaim_connection_get_account(gc), data->name); |
|
195a587b6c32
[gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents:
8150
diff
changeset
|
4403 | gaim_blist_remove_buddy(b); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
4404 | } |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
4405 | |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
4406 | oscar_free_name_data(data); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4407 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4408 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
4409 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
4410 | static void gaim_auth_sendrequest(GaimConnection *gc, char *name) { |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4411 | struct name_data *data = g_new(struct name_data, 1); |
| 6695 | 4412 | GaimBuddy *buddy; |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4413 | gchar *dialog_msg, *nombre; |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4414 | |
| 4687 | 4415 | buddy = gaim_find_buddy(gc->account, name); |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
4416 | if (buddy && (gaim_buddy_get_alias_only(buddy))) |
|
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
4417 | nombre = g_strdup_printf("%s (%s)", name, gaim_buddy_get_alias_only(buddy)); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4418 | else |
|
4830
d0f1945b27b7
[gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents:
4829
diff
changeset
|
4419 | nombre = NULL; |
|
d0f1945b27b7
[gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents:
4829
diff
changeset
|
4420 | |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
4421 | 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
|
4422 | data->gc = gc; |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4423 | data->name = g_strdup(name); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4424 | data->nick = NULL; |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4425 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4426 | gaim_request_action(gc, NULL, _("Request Authorization"), dialog_msg, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4427 | 0, data, 2, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4428 | _("Request Authorization"), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4429 | G_CALLBACK(gaim_auth_request_msgprompt), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4430 | _("Cancel"), G_CALLBACK(gaim_auth_dontrequest)); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4431 | |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4432 | g_free(dialog_msg); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4433 | g_free(nombre); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4434 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4435 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
4436 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
4437 | static void gaim_auth_sendrequest_menu(GaimBlistNode *node, gpointer ignored) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
4438 | GaimBuddy *buddy; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
4439 | GaimConnection *gc; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
4440 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
4441 | g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node)); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
4442 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
4443 | buddy = (GaimBuddy *) node; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
4444 | gc = gaim_account_get_connection(buddy->account); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
4445 | gaim_auth_sendrequest(gc, buddy->name); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
4446 | } |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
4447 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4448 | /* When other people ask you for authorization */ |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4449 | static void gaim_auth_grant(struct name_data *data) { |
| 5575 | 4450 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
4451 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
4452 | if (g_list_find(gaim_connections_get_all(), gc)) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4453 | OscarData *od = gc->proto_data; |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4454 | aim_ssi_sendauthreply(od->sess, data->name, 0x01, NULL); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
4455 | } |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
4456 | |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
4457 | oscar_free_name_data(data); |
| 3141 | 4458 | } |
| 4459 | ||
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4460 | /* When other people ask you for authorization */ |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4461 | static void gaim_auth_dontgrant(struct name_data *data, char *msg) { |
| 5575 | 4462 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
4463 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
4464 | if (g_list_find(gaim_connections_get_all(), gc)) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4465 | OscarData *od = gc->proto_data; |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4466 | aim_ssi_sendauthreply(od->sess, data->name, 0x00, msg ? msg : _("No reason given.")); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
4467 | } |
|
4337
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
4468 | } |
|
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
4469 | |
|
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
4470 | static void gaim_auth_dontgrant_msgprompt(struct name_data *data) { |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
4471 | gaim_request_input(data->gc, NULL, _("Authorization Denied Message:"), |
| 8697 | 4472 | NULL, _("No reason given."), TRUE, FALSE, NULL, |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
4473 | _("OK"), G_CALLBACK(gaim_auth_dontgrant), |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
4474 | _("Cancel"), G_CALLBACK(oscar_free_name_data), |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
4475 | data); |
| 3141 | 4476 | } |
| 4477 | ||
| 7023 | 4478 | /* When someone sends you buddies */ |
| 4479 | static void gaim_icq_buddyadd(struct name_data *data) { | |
| 5575 | 4480 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
4481 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
4482 | if (g_list_find(gaim_connections_get_all(), gc)) { |
|
7060
717cbeb22b6d
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7054
diff
changeset
|
4483 | gaim_blist_request_add_buddy(gaim_connection_get_account(gc), data->name, NULL, data->nick); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
4484 | } |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
4485 | |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
4486 | oscar_free_name_data(data); |
| 3453 | 4487 | } |
| 4488 | ||
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
4489 | 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 | 4490 | GaimConnection *gc = sess->aux_data; |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
4491 | GaimAccount *account = gaim_connection_get_account(gc); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4492 | gchar **msg1, **msg2; |
|
6051
6d481c30603c
[gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents:
6040
diff
changeset
|
4493 | int i, numtoks; |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4494 | |
| 4121 | 4495 | if (!args->type || !args->msg || !args->uin) |
| 4496 | return 1; | |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
4497 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4498 | gaim_debug_info("oscar", |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
4499 | "Received a channel 4 message of type 0x%02hhx.\n", |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
4500 | args->type); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4501 | |
|
9919
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
4502 | /* |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
4503 | * Split up the message at the delimeter character, then convert each |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
4504 | * string to UTF-8. Unless, of course, this is a type 1 message. If |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
4505 | * this is a type 1 message, then the delimiter 0xfe could be a valid |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
4506 | * character in whatever encoding the message was sent in. Type 1 |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
4507 | * messages are always made up of only one part, so we can easily account |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
4508 | * for this suck-ass part of the protocol by splitting the string into at |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
4509 | * most 1 baby string. |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
4510 | */ |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
4511 | msg1 = g_strsplit(args->msg, "\376", (args->type == 0x01 ? 1 : 0)); |
|
6051
6d481c30603c
[gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents:
6040
diff
changeset
|
4512 | for (numtoks=0; msg1[numtoks]; numtoks++); |
|
6d481c30603c
[gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents:
6040
diff
changeset
|
4513 | msg2 = (gchar **)g_malloc((numtoks+1)*sizeof(gchar *)); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4514 | for (i=0; msg1[i]; i++) { |
|
11920
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11910
diff
changeset
|
4515 | gaim_str_strip_char(msg1[i], '\r'); |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
4516 | msg2[i] = gaim_plugin_oscar_decode_im_part(account, "1", AIM_CHARSET_ASCII, 0x0000, msg1[i], strlen(msg1[i])); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4517 | } |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4518 | msg2[i] = NULL; |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4519 | |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
4520 | switch (args->type) { |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
4521 | case 0x01: { /* MacICQ message or basic offline message */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4522 | if (i >= 1) { |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
4523 | gchar *uin = g_strdup_printf("%u", args->uin); |
|
8493
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
4524 | gchar *tmp; |
|
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
4525 | |
|
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
4526 | /* If the message came from an ICQ user then escape any HTML */ |
|
10732
5e314ab498bf
[gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents:
10715
diff
changeset
|
4527 | tmp = g_markup_escape_text(msg2[0], -1); |
|
8493
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
4528 | |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4529 | if (t) { /* This is an offline message */ |
|
9680
170d9c1ab218
[gaim-migrate @ 10532]
Dave West <kat@users.sourceforge.net>
parents:
9661
diff
changeset
|
4530 | /* The timestamp is UTC-ish, so we need to get the offset */ |
|
9698
d83c7c4b0ccc
[gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents:
9680
diff
changeset
|
4531 | #ifdef HAVE_TM_GMTOFF |
|
9724
7e977ad7ccef
[gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents:
9713
diff
changeset
|
4532 | time_t now; |
|
7e977ad7ccef
[gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents:
9713
diff
changeset
|
4533 | struct tm *tm; |
|
7e977ad7ccef
[gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents:
9713
diff
changeset
|
4534 | now = time(NULL); |
|
7e977ad7ccef
[gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents:
9713
diff
changeset
|
4535 | tm = localtime(&now); |
|
7e977ad7ccef
[gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents:
9713
diff
changeset
|
4536 | t += tm->tm_gmtoff; |
|
9698
d83c7c4b0ccc
[gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents:
9680
diff
changeset
|
4537 | #else |
|
d83c7c4b0ccc
[gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents:
9680
diff
changeset
|
4538 | # ifdef HAVE_TIMEZONE |
|
9680
170d9c1ab218
[gaim-migrate @ 10532]
Dave West <kat@users.sourceforge.net>
parents:
9661
diff
changeset
|
4539 | tzset(); |
|
170d9c1ab218
[gaim-migrate @ 10532]
Dave West <kat@users.sourceforge.net>
parents:
9661
diff
changeset
|
4540 | t -= timezone; |
|
9698
d83c7c4b0ccc
[gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents:
9680
diff
changeset
|
4541 | # endif |
|
d83c7c4b0ccc
[gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents:
9680
diff
changeset
|
4542 | #endif |
| 8514 | 4543 | serv_got_im(gc, uin, tmp, 0, t); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4544 | } else { /* This is a message from MacICQ/Miranda */ |
| 8514 | 4545 | serv_got_im(gc, uin, tmp, 0, time(NULL)); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4546 | } |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4547 | g_free(uin); |
|
8493
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
4548 | g_free(tmp); |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
4549 | } |
|
3316
43bb95f6167a
[gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents:
3279
diff
changeset
|
4550 | } break; |
|
43bb95f6167a
[gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents:
3279
diff
changeset
|
4551 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
4552 | case 0x04: { /* Someone sent you a URL */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4553 | if (i >= 2) { |
|
7385
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
4554 | if (msg2[1] != NULL) { |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
4555 | gchar *uin = g_strdup_printf("%u", args->uin); |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
4556 | gchar *message = g_strdup_printf("<A HREF=\"%s\">%s</A>", |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
4557 | msg2[1], |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
4558 | (msg2[0] && msg2[0][0]) ? msg2[0] : msg2[1]); |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
4559 | serv_got_im(gc, uin, message, 0, time(NULL)); |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
4560 | g_free(uin); |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
4561 | g_free(message); |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
4562 | } |
| 3453 | 4563 | } |
| 4564 | } break; | |
| 4565 | ||
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
4566 | case 0x06: { /* Someone requested authorization */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4567 | if (i >= 6) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4568 | struct name_data *data = g_new(struct name_data, 1); |
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
4569 | gchar *sn = g_strdup_printf("%u", args->uin); |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
4570 | gchar *reason; |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
4571 | gchar *dialog_msg; |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
4572 | |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
4573 | if (msg2[5] != NULL) |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
4574 | reason = gaim_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg2[5], strlen(msg2[5])); |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
4575 | else |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
4576 | reason = g_strdup(_("No reason given.")); |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
4577 | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4578 | dialog_msg = g_strdup_printf(_("The user %u wants to add %s to their buddy list for the following reason:\n%s"), |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
4579 | args->uin, gaim_account_get_username(gc->account), reason); |
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
4580 | g_free(reason); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4581 | gaim_debug_info("oscar", |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
4582 | "Received an authorization request from UIN %u\n", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4583 | args->uin); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4584 | data->gc = gc; |
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
4585 | data->name = sn; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4586 | data->nick = NULL; |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4587 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4588 | gaim_request_action(gc, NULL, _("Authorization Request"), |
|
9948
2642975ffb85
[gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents:
9944
diff
changeset
|
4589 | dialog_msg, GAIM_DEFAULT_ACTION_NONE, data, |
|
2642975ffb85
[gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents:
9944
diff
changeset
|
4590 | 2, _("Authorize"), |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4591 | G_CALLBACK(gaim_auth_grant), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4592 | _("Deny"), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4593 | G_CALLBACK(gaim_auth_dontgrant_msgprompt)); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4594 | g_free(dialog_msg); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4595 | } |
| 3141 | 4596 | } break; |
| 4597 | ||
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
4598 | case 0x07: { /* Someone has denied you authorization */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4599 | if (i >= 1) { |
| 7023 | 4600 | gchar *dialog_msg = g_strdup_printf(_("The user %u has denied your request to add them to your buddy list for the following reason:\n%s"), args->uin, msg2[0] ? msg2[0] : _("No reason given.")); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4601 | gaim_notify_info(gc, NULL, _("ICQ authorization denied."), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4602 | dialog_msg); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4603 | g_free(dialog_msg); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4604 | } |
| 3141 | 4605 | } break; |
| 4606 | ||
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
4607 | case 0x08: { /* Someone has granted you authorization */ |
| 7023 | 4608 | gchar *dialog_msg = g_strdup_printf(_("The user %u has granted your request to add them to your buddy list."), args->uin); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4609 | gaim_notify_info(gc, NULL, "ICQ authorization accepted.", |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4610 | dialog_msg); |
| 3141 | 4611 | g_free(dialog_msg); |
| 4612 | } break; | |
| 4613 | ||
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
4614 | case 0x09: { /* Message from the Godly ICQ server itself, I think */ |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
4615 | if (i >= 5) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
4616 | 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
|
4617 | gaim_notify_info(gc, NULL, "ICQ Server Message", dialog_msg); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
4618 | g_free(dialog_msg); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
4619 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
4620 | } break; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
4621 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
4622 | 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
|
4623 | if (i >= 6) { |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
4624 | 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
|
4625 | gaim_notify_info(gc, NULL, "ICQ Page", dialog_msg); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4626 | g_free(dialog_msg); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4627 | } |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
4628 | } break; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
4629 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
4630 | 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
|
4631 | if (i >= 6) { |
|
4308
8eefe9f67895
[gaim-migrate @ 4562]
Mark Doliner <markdoliner@pidgin.im>
parents:
4303
diff
changeset
|
4632 | 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
|
4633 | gaim_notify_info(gc, NULL, "ICQ Email", dialog_msg); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4634 | g_free(dialog_msg); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4635 | } |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
4636 | } break; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
4637 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
4638 | case 0x12: { |
| 3141 | 4639 | /* Ack for authorizing/denying someone. Or possibly an ack for sending any system notice */ |
| 7023 | 4640 | /* Someone added you to their buddy list? */ |
| 3141 | 4641 | } break; |
| 4642 | ||
| 7023 | 4643 | case 0x13: { /* Someone has sent you some ICQ buddies */ |
| 7631 | 4644 | guint i, num; |
| 3453 | 4645 | gchar **text; |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
4646 | text = g_strsplit(args->msg, "\376", 0); |
| 3453 | 4647 | if (text) { |
| 4648 | num = 0; | |
| 4649 | for (i=0; i<strlen(text[0]); i++) | |
| 4650 | num = num*10 + text[0][i]-48; | |
| 4651 | for (i=0; i<num; i++) { | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4652 | struct name_data *data = g_new(struct name_data, 1); |
| 7023 | 4653 | gchar *message = g_strdup_printf(_("ICQ user %u has sent you a buddy: %s (%s)"), args->uin, text[i*2+2], text[i*2+1]); |
| 3453 | 4654 | data->gc = gc; |
|
4790
765a98790ede
[gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents:
4785
diff
changeset
|
4655 | data->name = g_strdup(text[i*2+1]); |
|
765a98790ede
[gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents:
4785
diff
changeset
|
4656 | data->nick = g_strdup(text[i*2+2]); |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4657 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
4658 | gaim_request_action(gc, NULL, message, |
| 7023 | 4659 | _("Do you want to add this buddy " |
| 4660 | "to your buddy list?"), | |
|
9972
f39adb92a177
[gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents:
9971
diff
changeset
|
4661 | GAIM_DEFAULT_ACTION_NONE, data, 2, |
| 7023 | 4662 | _("Add"), G_CALLBACK(gaim_icq_buddyadd), |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
4663 | _("Decline"), G_CALLBACK(oscar_free_name_data)); |
| 3453 | 4664 | g_free(message); |
| 4665 | } | |
| 4666 | g_strfreev(text); | |
| 4667 | } | |
| 4668 | } break; | |
| 4669 | ||
| 7023 | 4670 | case 0x1a: { /* Someone has sent you a greeting card or requested buddies? */ |
| 3453 | 4671 | /* This is boring and silly. */ |
| 4672 | } break; | |
| 4673 | ||
| 3141 | 4674 | default: { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4675 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4676 | "Received a channel 4 message of unknown type " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4677 | "(type 0x%02hhx).\n", args->type); |
| 3141 | 4678 | } break; |
| 4679 | } | |
| 4680 | ||
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4681 | g_strfreev(msg1); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4682 | g_strfreev(msg2); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4683 | |
| 3141 | 4684 | return 1; |
| 4685 | } | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4686 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4687 | 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
|
4688 | fu16_t channel; |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4689 | int ret = 0; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
4690 | aim_userinfo_t *userinfo; |
| 2086 | 4691 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4692 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4693 | va_start(ap, fr); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4694 | channel = (fu16_t)va_arg(ap, unsigned int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
4695 | userinfo = va_arg(ap, aim_userinfo_t *); |
| 2086 | 4696 | |
| 3141 | 4697 | switch (channel) { |
| 4698 | case 1: { /* standard message */ | |
| 4699 | struct aim_incomingim_ch1_args *args; | |
| 4700 | args = va_arg(ap, struct aim_incomingim_ch1_args *); | |
| 4701 | ret = incomingim_chan1(sess, fr->conn, userinfo, args); | |
| 4702 | } break; | |
| 4703 | ||
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
8733
diff
changeset
|
4704 | case 2: { /* rendezvous */ |
| 3141 | 4705 | struct aim_incomingim_ch2_args *args; |
| 4706 | args = va_arg(ap, struct aim_incomingim_ch2_args *); | |
| 4707 | ret = incomingim_chan2(sess, fr->conn, userinfo, args); | |
| 4708 | } break; | |
| 4709 | ||
| 4710 | case 4: { /* ICQ */ | |
| 4711 | struct aim_incomingim_ch4_args *args; | |
| 4712 | args = va_arg(ap, struct aim_incomingim_ch4_args *); | |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
4713 | ret = incomingim_chan4(sess, fr->conn, userinfo, args, 0); |
| 3141 | 4714 | } break; |
| 4715 | ||
| 4716 | default: { | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4717 | gaim_debug_warning("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4718 | "ICBM received on unsupported channel (channel " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4719 | "0x%04hx).", channel); |
| 3141 | 4720 | } break; |
| 2086 | 4721 | } |
| 4722 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4723 | va_end(ap); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4724 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4725 | return ret; |
| 2086 | 4726 | } |
| 4727 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4728 | static int gaim_parse_misses(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
4729 | GaimConnection *gc = sess->aux_data; |
|
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
4730 | GaimAccount *account = gaim_connection_get_account(gc); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4731 | char *buf; |
| 2086 | 4732 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4733 | fu16_t chan, nummissed, reason; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
4734 | aim_userinfo_t *userinfo; |
| 2086 | 4735 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4736 | va_start(ap, fr); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4737 | chan = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4738 | userinfo = va_arg(ap, aim_userinfo_t *); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4739 | nummissed = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4740 | reason = (fu16_t)va_arg(ap, unsigned int); |
| 2086 | 4741 | va_end(ap); |
| 4742 | ||
| 4743 | switch(reason) { | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4744 | case 0: /* Invalid (0) */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4745 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4746 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
4747 | "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
|
4748 | "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
|
4749 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4750 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4751 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4752 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4753 | case 1: /* Message too large */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4754 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4755 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
4756 | "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
|
4757 | "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
|
4758 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4759 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4760 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4761 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4762 | case 2: /* Rate exceeded */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4763 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4764 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
4765 | "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
|
4766 | "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
|
4767 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4768 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4769 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4770 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4771 | case 3: /* Evil Sender */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4772 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4773 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
4774 | "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
|
4775 | "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
|
4776 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4777 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4778 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4779 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4780 | case 4: /* Evil Receiver */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4781 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4782 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
4783 | "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
|
4784 | "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
|
4785 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4786 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4787 | userinfo->sn); |
| 2086 | 4788 | break; |
| 4789 | default: | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4790 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4791 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
4792 | "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
|
4793 | "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
|
4794 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4795 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4796 | userinfo->sn); |
| 2086 | 4797 | break; |
| 4798 | } | |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
4799 | |
| 9627 | 4800 | if (!gaim_conv_present_error(userinfo->sn, account, buf)) |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
4801 | gaim_notify_error(sess->aux_data, NULL, buf, NULL); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4802 | g_free(buf); |
| 2086 | 4803 | |
| 4804 | return 1; | |
| 4805 | } | |
| 4806 | ||
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
4807 | static int gaim_parse_clientauto_ch2(aim_session_t *sess, const char *who, fu16_t reason, const guchar *cookie) { |
| 5575 | 4808 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4809 | OscarData *od = gc->proto_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4810 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4811 | /* BBB */ |
| 3630 | 4812 | switch (reason) { |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4813 | case 3: { /* Decline sendfile. */ |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
4814 | GaimXfer *xfer; |
| 8971 | 4815 | struct oscar_direct_im *dim; |
| 4816 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4817 | gaim_debug_info("oscar", |
| 9070 | 4818 | "AAA - Other user declined some sort of direct " |
| 8971 | 4819 | "connect attempt (automaticly?)\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4820 | 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
|
4821 | gaim_xfer_cancel_remote(xfer); |
| 8971 | 4822 | else if ((dim = oscar_direct_im_find(od, who))) { |
| 4823 | /* AAA should use find by cookie or something here */ | |
| 4824 | oscar_direct_im_disconnect(od, dim); | |
| 4825 | } | |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4826 | } break; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4827 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4828 | default: { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4829 | gaim_debug_warning("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4830 | "Received an unknown rendezvous client auto-response " |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
4831 | "from %s. Type 0x%04hx\n", who, reason); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4832 | } |
| 3630 | 4833 | |
| 4834 | } | |
| 4835 | ||
| 4836 | return 0; | |
| 4837 | } | |
| 4838 | ||
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
4839 | static int gaim_parse_clientauto_ch4(aim_session_t *sess, char *who, fu16_t reason, fu32_t state, char *msg) { |
| 5575 | 4840 | GaimConnection *gc = sess->aux_data; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4841 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4842 | switch(reason) { |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4843 | case 0x0003: { /* Reply from an ICQ status message request */ |
| 9244 | 4844 | char *title, *statusmsg, **splitmsg, *dialogmsg; |
| 4845 | ||
| 4846 | title = g_strdup_printf(_("Info for %s"), who); | |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4847 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4848 | /* Split at (carriage return/newline)'s, then rejoin later with BRs between. */ |
| 9244 | 4849 | statusmsg = oscar_icqstatus(state); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4850 | splitmsg = g_strsplit(msg, "\r\n", 0); |
| 9244 | 4851 | dialogmsg = g_strdup_printf(_("<B>UIN:</B> %s<BR><B>Status:</B> %s<HR>%s"), who, statusmsg, g_strjoinv("<BR>", splitmsg)); |
| 4852 | g_free(statusmsg); | |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4853 | g_strfreev(splitmsg); |
| 9244 | 4854 | |
|
11533
f58436975d44
[gaim-migrate @ 13782]
Richard Laager <rlaager@pidgin.im>
parents:
11532
diff
changeset
|
4855 | gaim_notify_userinfo(gc, who, dialogmsg, NULL, NULL); |
| 9244 | 4856 | |
| 4857 | g_free(title); | |
| 4858 | g_free(dialogmsg); | |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4859 | } break; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4860 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4861 | default: { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4862 | gaim_debug_warning("oscar", |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
4863 | "Received an unknown client auto-response from %s. " |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4864 | "Type 0x%04hx\n", who, reason); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4865 | } break; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4866 | } /* end of switch */ |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4867 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4868 | return 0; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4869 | } |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4870 | |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4871 | 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
|
4872 | va_list ap; |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4873 | fu16_t chan, reason; |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4874 | char *who; |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4875 | |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4876 | va_start(ap, fr); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4877 | chan = (fu16_t)va_arg(ap, unsigned int); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4878 | who = va_arg(ap, char *); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4879 | reason = (fu16_t)va_arg(ap, unsigned int); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4880 | |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
4881 | if (chan == 0x0002) { /* File transfer declined */ |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
4882 | guchar *cookie = va_arg(ap, guchar *); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4883 | return gaim_parse_clientauto_ch2(sess, who, reason, cookie); |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
4884 | } else if (chan == 0x0004) { /* ICQ message */ |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4885 | fu32_t state = 0; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4886 | char *msg = NULL; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4887 | if (reason == 0x0003) { |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4888 | state = va_arg(ap, fu32_t); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4889 | msg = va_arg(ap, char *); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4890 | } |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4891 | return gaim_parse_clientauto_ch4(sess, who, reason, state, msg); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4892 | } |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
4893 | |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4894 | va_end(ap); |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4895 | |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4896 | return 1; |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4897 | } |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4898 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4899 | static int gaim_parse_genericerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 4900 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4901 | fu16_t reason; |
|
2865
fbc616afa491
[gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2864
diff
changeset
|
4902 | char *m; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4903 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4904 | va_start(ap, fr); |
| 4199 | 4905 | reason = (fu16_t) va_arg(ap, unsigned int); |
| 2086 | 4906 | va_end(ap); |
| 4907 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4908 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4909 | "snac threw error (reason 0x%04hx: %s)\n", reason, |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4910 | (reason < msgerrreasonlen) ? msgerrreason[reason] : "unknown"); |
| 2086 | 4911 | |
|
2865
fbc616afa491
[gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2864
diff
changeset
|
4912 | m = g_strdup_printf(_("SNAC threw error: %s\n"), |
|
5411
b3683d2acbb4
[gaim-migrate @ 5787]
Mark Doliner <markdoliner@pidgin.im>
parents:
5402
diff
changeset
|
4913 | reason < msgerrreasonlen ? _(msgerrreason[reason]) : _("Unknown error")); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4914 | gaim_notify_error(sess->aux_data, NULL, m, NULL); |
|
2865
fbc616afa491
[gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2864
diff
changeset
|
4915 | g_free(m); |
|
fbc616afa491
[gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2864
diff
changeset
|
4916 | |
| 2086 | 4917 | return 1; |
| 4918 | } | |
| 4919 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4920 | static int gaim_parse_msgerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 9627 | 4921 | GaimConnection *gc = sess->aux_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4922 | #if 0 |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4923 | OscarData *od = gc->proto_data; |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
4924 | GaimXfer *xfer; |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
4925 | #endif |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4926 | va_list ap; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4927 | fu16_t reason; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4928 | char *data, *buf; |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
4929 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4930 | va_start(ap, fr); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4931 | reason = (fu16_t)va_arg(ap, unsigned int); |
| 3752 | 4932 | data = va_arg(ap, char *); |
| 2086 | 4933 | va_end(ap); |
| 4934 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4935 | gaim_debug_error("oscar", |
|
10130
7256fb884aaf
[gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents:
10116
diff
changeset
|
4936 | "Message error with data %s and reason %hu\n", |
|
7256fb884aaf
[gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents:
10116
diff
changeset
|
4937 | (data != NULL ? data : ""), reason); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4938 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4939 | /* BBB */ |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
4940 | #if 0 |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4941 | /* If this was a file transfer request, data is a cookie */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4942 | 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
|
4943 | gaim_xfer_cancel_remote(xfer); |
| 3630 | 4944 | return 1; |
| 4945 | } | |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
4946 | #endif |
| 3630 | 4947 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4948 | /* Data is assumed to be the destination sn */ |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4949 | buf = g_strdup_printf(_("Unable to send message: %s"), (reason < msgerrreasonlen) ? msgerrreason[reason] : _("Unknown reason.")); |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4950 | if (!gaim_conv_present_error(data, gaim_connection_get_account(gc), buf)) { |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4951 | g_free(buf); |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4952 | buf = g_strdup_printf(_("Unable to send message to %s:"), data ? data : "(unknown)"); |
| 9627 | 4953 | gaim_notify_error(sess->aux_data, NULL, buf, |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4954 | (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason.")); |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4955 | } |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4956 | g_free(buf); |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4957 | |
| 2086 | 4958 | return 1; |
| 4959 | } | |
| 4960 | ||
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4961 | static int gaim_parse_mtn(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 4962 | GaimConnection *gc = sess->aux_data; |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4963 | va_list ap; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4964 | fu16_t type1, type2; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4965 | char *sn; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4966 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4967 | va_start(ap, fr); |
| 4199 | 4968 | type1 = (fu16_t) va_arg(ap, unsigned int); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4969 | sn = va_arg(ap, char *); |
| 4199 | 4970 | type2 = (fu16_t) va_arg(ap, unsigned int); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4971 | va_end(ap); |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4972 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4973 | switch (type2) { |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4974 | case 0x0000: { /* Text has been cleared */ |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4975 | serv_got_typing_stopped(gc, sn); |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4976 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4977 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4978 | case 0x0001: { /* Paused typing */ |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
4979 | serv_got_typing(gc, sn, 0, GAIM_TYPED); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4980 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4981 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4982 | case 0x0002: { /* Typing */ |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
4983 | serv_got_typing(gc, sn, 0, GAIM_TYPING); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4984 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4985 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4986 | default: { |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
4987 | 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
|
4988 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4989 | } |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4990 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4991 | return 1; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4992 | } |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4993 | |
|
7141
431a007467e8
[gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents:
7129
diff
changeset
|
4994 | /* |
|
431a007467e8
[gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents:
7129
diff
changeset
|
4995 | * We get this error when there was an error in the locate family. This |
|
7259
9d12688cee90
[gaim-migrate @ 7836]
Mark Doliner <markdoliner@pidgin.im>
parents:
7253
diff
changeset
|
4996 | * happens when you request info of someone who is offline. |
|
7141
431a007467e8
[gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents:
7129
diff
changeset
|
4997 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4998 | static int gaim_parse_locerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4999 | gchar *buf; |
| 2086 | 5000 | va_list ap; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
5001 | fu16_t reason; |
| 2086 | 5002 | char *destn; |
| 5003 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5004 | va_start(ap, fr); |
| 4199 | 5005 | reason = (fu16_t) va_arg(ap, unsigned int); |
| 2086 | 5006 | destn = va_arg(ap, char *); |
| 5007 | va_end(ap); | |
| 5008 | ||
|
7781
db624418e528
[gaim-migrate @ 8426]
Mark Doliner <markdoliner@pidgin.im>
parents:
7693
diff
changeset
|
5009 | if (destn == NULL) |
|
7793
9d6043375b81
[gaim-migrate @ 8439]
Mark Doliner <markdoliner@pidgin.im>
parents:
7781
diff
changeset
|
5010 | return 1; |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
5011 | |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
5012 | buf = g_strdup_printf(_("User information not available: %s"), (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason.")); |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
5013 | if (!gaim_conv_present_error(destn, gaim_connection_get_account((GaimConnection*)sess->aux_data), buf)) { |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
5014 | g_free(buf); |
| 9627 | 5015 | buf = g_strdup_printf(_("User information for %s unavailable:"), destn); |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
5016 | gaim_notify_error(sess->aux_data, NULL, buf, (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason.")); |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
5017 | } |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
5018 | g_free(buf); |
| 2086 | 5019 | |
| 5020 | return 1; | |
| 5021 | } | |
| 5022 | ||
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5023 | static int gaim_parse_userinfo(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 5024 | GaimConnection *gc = sess->aux_data; |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5025 | GaimAccount *account = gaim_connection_get_account(gc); |
|
10567
87b02dd40349
[gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10565
diff
changeset
|
5026 | OscarData *od = gc->proto_data; |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5027 | GString *str; |
|
11532
b069bbab16be
[gaim-migrate @ 13781]
Luke Schierer <lschiere@pidgin.im>
parents:
11531
diff
changeset
|
5028 | gchar *tmp = NULL, *info_utf8 = NULL, *away_utf8 = NULL; |
|
4791
b35003e42654
[gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents:
4790
diff
changeset
|
5029 | va_list ap; |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5030 | aim_userinfo_t *userinfo; |
| 2086 | 5031 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5032 | va_start(ap, fr); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5033 | userinfo = va_arg(ap, aim_userinfo_t *); |
| 2086 | 5034 | va_end(ap); |
| 5035 | ||
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5036 | str = g_string_new(""); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5037 | g_string_append_printf(str, "<b>%s:</b> %s", _("Screen Name"), userinfo->sn); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5038 | g_string_append_printf(str, "\n<br><b>%s</b>: %d%%", _("Warning Level"), (int)((userinfo->warnlevel/10.0) + 0.5)); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5039 | |
|
10116
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10111
diff
changeset
|
5040 | if (userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) { |
|
10567
87b02dd40349
[gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10565
diff
changeset
|
5041 | time_t t = userinfo->onlinesince - od->timeoffset; |
|
10116
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10111
diff
changeset
|
5042 | oscar_string_append(str, "\n<br>", _("Online Since"), ctime(&t)); |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10111
diff
changeset
|
5043 | } |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10111
diff
changeset
|
5044 | |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10111
diff
changeset
|
5045 | if (userinfo->present & AIM_USERINFO_PRESENT_MEMBERSINCE) { |
|
10567
87b02dd40349
[gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10565
diff
changeset
|
5046 | time_t t = userinfo->membersince - od->timeoffset; |
|
10116
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10111
diff
changeset
|
5047 | oscar_string_append(str, "\n<br>", _("Member Since"), ctime(&t)); |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10111
diff
changeset
|
5048 | } |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5049 | |
|
12430
07bc0e58c8c2
[gaim-migrate @ 14737]
Mark Doliner <markdoliner@pidgin.im>
parents:
12426
diff
changeset
|
5050 | if (userinfo->capabilities != 0) { |
|
07bc0e58c8c2
[gaim-migrate @ 14737]
Mark Doliner <markdoliner@pidgin.im>
parents:
12426
diff
changeset
|
5051 | tmp = oscar_caps_to_string(userinfo->capabilities); |
|
07bc0e58c8c2
[gaim-migrate @ 14737]
Mark Doliner <markdoliner@pidgin.im>
parents:
12426
diff
changeset
|
5052 | oscar_string_append(str, "\n<br>", _("Capabilities"), tmp); |
|
07bc0e58c8c2
[gaim-migrate @ 14737]
Mark Doliner <markdoliner@pidgin.im>
parents:
12426
diff
changeset
|
5053 | g_free(tmp); |
|
07bc0e58c8c2
[gaim-migrate @ 14737]
Mark Doliner <markdoliner@pidgin.im>
parents:
12426
diff
changeset
|
5054 | } |
|
07bc0e58c8c2
[gaim-migrate @ 14737]
Mark Doliner <markdoliner@pidgin.im>
parents:
12426
diff
changeset
|
5055 | |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5056 | if (userinfo->present & AIM_USERINFO_PRESENT_IDLE) { |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5057 | tmp = gaim_str_seconds_to_string(userinfo->idletime*60); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5058 | oscar_string_append(str, "\n<br>", _("Idle"), tmp); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5059 | g_free(tmp); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5060 | } |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5061 | |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5062 | oscar_string_append_info(gc, str, "\n<br>", NULL, userinfo); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5063 | |
|
12271
01d61e68886e
[gaim-migrate @ 14573]
Mark Doliner <markdoliner@pidgin.im>
parents:
12260
diff
changeset
|
5064 | /* |
|
01d61e68886e
[gaim-migrate @ 14573]
Mark Doliner <markdoliner@pidgin.im>
parents:
12260
diff
changeset
|
5065 | * TODO: Need to duplicate what oscar_tooltip_text() does here so that |
|
01d61e68886e
[gaim-migrate @ 14573]
Mark Doliner <markdoliner@pidgin.im>
parents:
12260
diff
changeset
|
5066 | * we show the available message in the buddy info. |
|
01d61e68886e
[gaim-migrate @ 14573]
Mark Doliner <markdoliner@pidgin.im>
parents:
12260
diff
changeset
|
5067 | */ |
|
01d61e68886e
[gaim-migrate @ 14573]
Mark Doliner <markdoliner@pidgin.im>
parents:
12260
diff
changeset
|
5068 | |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5069 | if ((userinfo->flags & AIM_FLAG_AWAY) && (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) { |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5070 | tmp = oscar_encoding_extract(userinfo->away_encoding); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5071 | away_utf8 = oscar_encoding_to_utf8(tmp, userinfo->away, userinfo->away_len); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5072 | g_free(tmp); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5073 | if (away_utf8 != NULL) { |
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
5074 | g_string_append_printf(str, "\n<hr>%s<br>", away_utf8); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5075 | g_free(away_utf8); |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
5076 | } |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5077 | } |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5078 | |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5079 | if ((userinfo->info_len > 0) && (userinfo->info != NULL) && (userinfo->info_encoding != NULL)) { |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5080 | tmp = oscar_encoding_extract(userinfo->info_encoding); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5081 | info_utf8 = oscar_encoding_to_utf8(tmp, userinfo->info, userinfo->info_len); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5082 | g_free(tmp); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5083 | if (info_utf8 != NULL) { |
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
5084 | g_string_append_printf(str, "\n<hr>%s<br>", info_utf8); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5085 | g_free(info_utf8); |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
5086 | } |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5087 | } |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5088 | |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5089 | tmp = gaim_str_sub_away_formatters(str->str, gaim_account_get_username(account)); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5090 | g_string_free(str, TRUE); |
|
11920
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11910
diff
changeset
|
5091 | gaim_str_strip_char(tmp, '\r'); |
|
11533
f58436975d44
[gaim-migrate @ 13782]
Richard Laager <rlaager@pidgin.im>
parents:
11532
diff
changeset
|
5092 | gaim_notify_userinfo(gc, userinfo->sn, tmp, NULL, NULL); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5093 | g_free(tmp); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
5094 | |
| 2086 | 5095 | return 1; |
| 5096 | } | |
| 5097 | ||
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5098 | static int gaim_got_infoblock(aim_session_t *sess, aim_frame_t *fr, ...) |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5099 | { |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5100 | GaimConnection *gc = sess->aux_data; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5101 | GaimBuddy *b; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5102 | GaimPresence *presence; |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
5103 | GaimStatus *status; |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5104 | gchar *message = NULL; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5105 | |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5106 | va_list ap; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5107 | aim_userinfo_t *userinfo; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5108 | |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5109 | va_start(ap, fr); |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5110 | userinfo = va_arg(ap, aim_userinfo_t *); |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5111 | va_end(ap); |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5112 | |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5113 | b = gaim_find_buddy(gaim_connection_get_account(gc), userinfo->sn); |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5114 | if (b == NULL) |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5115 | return 1; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5116 | |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5117 | presence = gaim_buddy_get_presence(b); |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
5118 | status = gaim_presence_get_active_status(presence); |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
5119 | |
| 12426 | 5120 | if (!gaim_status_is_available(status) && gaim_status_is_online(status)) |
|
12271
01d61e68886e
[gaim-migrate @ 14573]
Mark Doliner <markdoliner@pidgin.im>
parents:
12260
diff
changeset
|
5121 | { |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5122 | if ((userinfo != NULL) && (userinfo->flags & AIM_FLAG_AWAY) && |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5123 | (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) { |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5124 | gchar *charset = oscar_encoding_extract(userinfo->away_encoding); |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5125 | message = oscar_encoding_to_utf8(charset, userinfo->away, userinfo->away_len); |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5126 | g_free(charset); |
| 12393 | 5127 | gaim_status_set_attr_string(status, "message", message); |
| 5128 | g_free(message); | |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5129 | } |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
5130 | |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
5131 | gaim_blist_update_buddy_status(b, status); |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
5132 | } |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5133 | |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5134 | return 1; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5135 | } |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5136 | |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5137 | static gboolean gaim_reqinfo_timeout_cb(void *data) |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5138 | { |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5139 | aim_session_t *sess = data; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5140 | GaimConnection *gc = sess->aux_data; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5141 | OscarData *od = (OscarData *)gc->proto_data; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5142 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5143 | aim_locate_dorequest(data); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5144 | od->getinfotimer = 0; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5145 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5146 | return FALSE; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5147 | } |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5148 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5149 | static int gaim_reqinfo_timeout(aim_session_t *sess, aim_frame_t *fr, ...) |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5150 | { |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5151 | GaimConnection *gc = sess->aux_data; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5152 | OscarData *od = (OscarData *)gc->proto_data; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5153 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5154 | /* |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5155 | * Wait a little while then call aim_locate_dorequest(sess). This keeps |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5156 | * us from hitting the rate limit due to request away messages and info |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5157 | * too quickly. |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5158 | */ |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5159 | if (od->getinfotimer == 0) |
|
11670
cc0cdaad5cc7
[gaim-migrate @ 13956]
Mark Doliner <markdoliner@pidgin.im>
parents:
11651
diff
changeset
|
5160 | od->getinfotimer = gaim_timeout_add(10000, gaim_reqinfo_timeout_cb, sess); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5161 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5162 | return 1; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5163 | } |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5164 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5165 | static int gaim_parse_motd(aim_session_t *sess, aim_frame_t *fr, ...) |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5166 | { |
| 2086 | 5167 | char *msg; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5168 | fu16_t id; |
| 2086 | 5169 | va_list ap; |
| 5170 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5171 | va_start(ap, fr); |
| 4199 | 5172 | id = (fu16_t) va_arg(ap, unsigned int); |
| 2086 | 5173 | msg = va_arg(ap, char *); |
| 5174 | va_end(ap); | |
| 5175 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5176 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5177 | "MOTD: %s (%hu)\n", msg ? msg : "Unknown", id); |
|
2092
f56061012e3c
[gaim-migrate @ 2102]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2090
diff
changeset
|
5178 | if (id < 4) |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5179 | gaim_notify_warning(sess->aux_data, NULL, |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5180 | _("Your AIM connection may be lost."), NULL); |
| 2086 | 5181 | |
| 5182 | return 1; | |
| 5183 | } | |
| 5184 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5185 | static int gaim_chatnav_info(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 5186 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5187 | fu16_t type; |
| 5575 | 5188 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5189 | OscarData *od = (OscarData *)gc->proto_data; |
| 2086 | 5190 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5191 | va_start(ap, fr); |
| 4199 | 5192 | type = (fu16_t) va_arg(ap, unsigned int); |
| 2086 | 5193 | |
| 5194 | switch(type) { | |
| 5195 | case 0x0002: { | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5196 | fu8_t maxrooms; |
| 2086 | 5197 | struct aim_chat_exchangeinfo *exchanges; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5198 | int exchangecount, i; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5199 | |
| 4199 | 5200 | maxrooms = (fu8_t) va_arg(ap, unsigned int); |
| 2086 | 5201 | exchangecount = va_arg(ap, int); |
| 5202 | exchanges = va_arg(ap, struct aim_chat_exchangeinfo *); | |
| 5203 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5204 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5205 | "chat info: Chat Rights:\n"); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5206 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5207 | "chat info: \tMax Concurrent Rooms: %hhd\n", maxrooms); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5208 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5209 | "chat info: \tExchange List: (%d total)\n", exchangecount); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5210 | for (i = 0; i < exchangecount; i++) |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5211 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5212 | "chat info: \t\t%hu %s\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5213 | exchanges[i].number, exchanges[i].name ? exchanges[i].name : ""); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5214 | while (od->create_rooms) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5215 | struct create_room *cr = od->create_rooms->data; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5216 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5217 | "creating room %s\n", cr->name); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
5218 | aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
5219 | g_free(cr->name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5220 | od->create_rooms = g_slist_remove(od->create_rooms, cr); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
5221 | g_free(cr); |
| 2086 | 5222 | } |
| 5223 | } | |
| 5224 | break; | |
| 5225 | case 0x0008: { | |
| 5226 | char *fqcn, *name, *ck; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5227 | fu16_t instance, flags, maxmsglen, maxoccupancy, unknown, exchange; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5228 | fu8_t createperms; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5229 | fu32_t createtime; |
| 2086 | 5230 | |
| 5231 | fqcn = va_arg(ap, char *); | |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5232 | instance = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5233 | exchange = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5234 | flags = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5235 | createtime = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5236 | maxmsglen = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5237 | maxoccupancy = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5238 | createperms = (fu8_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5239 | unknown = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5240 | name = va_arg(ap, char *); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5241 | ck = va_arg(ap, char *); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
5242 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5243 | gaim_debug_misc("oscar", |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
5244 | "created room: %s %hu %hu %hu %u %hu %hu %hhu %hu %s %s\n", |
| 2086 | 5245 | fqcn, |
| 5246 | exchange, instance, flags, | |
| 5247 | createtime, | |
| 5248 | maxmsglen, maxoccupancy, createperms, unknown, | |
| 5249 | name, ck); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5250 | aim_chat_join(od->sess, od->conn, exchange, ck, instance); |
| 2086 | 5251 | } |
| 5252 | break; | |
| 5253 | default: | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5254 | gaim_debug_warning("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5255 | "chatnav info: unknown type (%04hx)\n", type); |
| 2086 | 5256 | break; |
| 5257 | } | |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
5258 | |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
5259 | va_end(ap); |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
5260 | |
| 2086 | 5261 | return 1; |
| 5262 | } | |
| 5263 | ||
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
5264 | static int gaim_conv_chat_join(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 5265 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5266 | int count, i; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
5267 | aim_userinfo_t *info; |
| 5575 | 5268 | GaimConnection *g = sess->aux_data; |
| 2086 | 5269 | |
| 5270 | struct chat_connection *c = NULL; | |
| 5271 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5272 | va_start(ap, fr); |
| 2086 | 5273 | count = va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
5274 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 5275 | va_end(ap); |
| 5276 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5277 | c = find_oscar_chat_by_conn(g, fr->conn); |
| 2086 | 5278 | if (!c) |
| 5279 | return 1; | |
| 5280 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5281 | for (i = 0; i < count; i++) |
|
9846
61f7349c153a
[gaim-migrate @ 10724]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9831
diff
changeset
|
5282 | gaim_conv_chat_add_user(GAIM_CONV_CHAT(c->conv), info[i].sn, NULL, GAIM_CBFLAGS_NONE, TRUE); |
| 2086 | 5283 | |
| 5284 | return 1; | |
| 5285 | } | |
| 5286 | ||
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
5287 | static int gaim_conv_chat_leave(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 5288 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5289 | int count, i; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
5290 | aim_userinfo_t *info; |
| 5575 | 5291 | GaimConnection *g = sess->aux_data; |
| 2086 | 5292 | |
| 5293 | struct chat_connection *c = NULL; | |
| 5294 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5295 | va_start(ap, fr); |
| 2086 | 5296 | count = va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
5297 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 5298 | va_end(ap); |
| 5299 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5300 | c = find_oscar_chat_by_conn(g, fr->conn); |
| 2086 | 5301 | if (!c) |
| 5302 | return 1; | |
| 5303 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5304 | for (i = 0; i < count; i++) |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
5305 | gaim_conv_chat_remove_user(GAIM_CONV_CHAT(c->conv), info[i].sn, NULL); |
| 2086 | 5306 | |
| 5307 | return 1; | |
| 5308 | } | |
| 5309 | ||
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
5310 | static int gaim_conv_chat_info_update(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5311 | va_list ap; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
5312 | aim_userinfo_t *userinfo; |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5313 | struct aim_chat_roominfo *roominfo; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5314 | char *roomname; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5315 | int usercount; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5316 | char *roomdesc; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5317 | fu16_t unknown_c9, unknown_d2, unknown_d5, maxmsglen, maxvisiblemsglen; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5318 | fu32_t creationtime; |
| 5575 | 5319 | GaimConnection *gc = sess->aux_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5320 | 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
|
5321 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5322 | va_start(ap, fr); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5323 | roominfo = va_arg(ap, struct aim_chat_roominfo *); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5324 | roomname = va_arg(ap, char *); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5325 | usercount= va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
5326 | userinfo = va_arg(ap, aim_userinfo_t *); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5327 | roomdesc = va_arg(ap, char *); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5328 | unknown_c9 = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5329 | creationtime = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5330 | maxmsglen = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5331 | unknown_d2 = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5332 | unknown_d5 = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5333 | maxvisiblemsglen = (fu16_t)va_arg(ap, unsigned int); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5334 | va_end(ap); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5335 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5336 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5337 | "inside chat_info_update (maxmsglen = %hu, maxvislen = %hu)\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5338 | maxmsglen, maxvisiblemsglen); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5339 | |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5340 | ccon->maxlen = maxmsglen; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5341 | ccon->maxvis = maxvisiblemsglen; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5342 | |
| 2086 | 5343 | return 1; |
| 5344 | } | |
| 5345 | ||
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
5346 | static int gaim_conv_chat_incoming_msg(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 5347 | GaimConnection *gc = sess->aux_data; |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
5348 | struct chat_connection *ccon = find_oscar_chat_by_conn(gc, fr->conn); |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
5349 | gchar *utf8; |
| 2086 | 5350 | va_list ap; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
5351 | aim_userinfo_t *info; |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
5352 | int len; |
| 2086 | 5353 | char *msg; |
| 8219 | 5354 | char *charset; |
| 2086 | 5355 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5356 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
5357 | info = va_arg(ap, aim_userinfo_t *); |
| 8219 | 5358 | len = va_arg(ap, int); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
5359 | msg = va_arg(ap, char *); |
| 8219 | 5360 | charset = va_arg(ap, char *); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
5361 | va_end(ap); |
| 2086 | 5362 | |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
5363 | utf8 = oscar_encoding_to_utf8(charset, msg, len); |
|
8667
534bd4c4fb38
[gaim-migrate @ 9419]
Mark Doliner <markdoliner@pidgin.im>
parents:
8666
diff
changeset
|
5364 | if (utf8 == NULL) |
|
534bd4c4fb38
[gaim-migrate @ 9419]
Mark Doliner <markdoliner@pidgin.im>
parents:
8666
diff
changeset
|
5365 | /* The conversion failed! */ |
|
8668
c72a49a7c46a
[gaim-migrate @ 9420]
Mark Doliner <markdoliner@pidgin.im>
parents:
8667
diff
changeset
|
5366 | utf8 = g_strdup(_("[Unable to display a message from this user because it contained invalid characters.]")); |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
5367 | serv_got_chat_in(gc, ccon->id, info->sn, 0, utf8, time((time_t)NULL)); |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
5368 | g_free(utf8); |
| 2086 | 5369 | |
| 5370 | return 1; | |
| 5371 | } | |
| 5372 | ||
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
5373 | 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
|
5374 | va_list ap; |
| 5575 | 5375 | GaimConnection *gc = sess->aux_data; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
5376 | struct aim_emailinfo *emailinfo; |
| 3725 | 5377 | int havenewmail; |
| 7297 | 5378 | char *alertitle, *alerturl; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
5379 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
5380 | va_start(ap, fr); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
5381 | emailinfo = va_arg(ap, struct aim_emailinfo *); |
| 3725 | 5382 | havenewmail = va_arg(ap, int); |
|
7301
f6a3a23fa2fc
[gaim-migrate @ 7885]
Mark Doliner <markdoliner@pidgin.im>
parents:
7297
diff
changeset
|
5383 | alertitle = va_arg(ap, char *); |
|
f6a3a23fa2fc
[gaim-migrate @ 7885]
Mark Doliner <markdoliner@pidgin.im>
parents:
7297
diff
changeset
|
5384 | alerturl = va_arg(ap, char *); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
5385 | va_end(ap); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
5386 | |
|
9661
a9895242a351
[gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents:
9659
diff
changeset
|
5387 | if ((emailinfo != NULL) && gaim_account_get_check_mail(gc->account)) { |
|
a9895242a351
[gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents:
9659
diff
changeset
|
5388 | gchar *to = g_strdup_printf("%s%s%s", gaim_account_get_username(gaim_connection_get_account(gc)), |
|
a9895242a351
[gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents:
9659
diff
changeset
|
5389 | emailinfo->domain ? "@" : "", |
|
a9895242a351
[gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents:
9659
diff
changeset
|
5390 | emailinfo->domain ? emailinfo->domain : ""); |
|
5542
0f02c413c862
[gaim-migrate @ 5942]
Mark Doliner <markdoliner@pidgin.im>
parents:
5540
diff
changeset
|
5391 | if (emailinfo->unread && havenewmail) |
|
0f02c413c862
[gaim-migrate @ 5942]
Mark Doliner <markdoliner@pidgin.im>
parents:
5540
diff
changeset
|
5392 | 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
|
5393 | g_free(to); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
5394 | } |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
5395 | |
|
7301
f6a3a23fa2fc
[gaim-migrate @ 7885]
Mark Doliner <markdoliner@pidgin.im>
parents:
7297
diff
changeset
|
5396 | if (alertitle) |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5397 | gaim_debug_misc("oscar", "Got an alert '%s' %s\n", alertitle, alerturl ? alerturl : ""); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
5398 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
5399 | return 1; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
5400 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
5401 | |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5402 | static int gaim_icon_error(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 5403 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5404 | OscarData *od = gc->proto_data; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5405 | char *sn; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5406 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5407 | sn = od->requesticon->data; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5408 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5409 | "removing %s from hash table\n", sn); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5410 | od->requesticon = g_slist_remove(od->requesticon, sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5411 | free(sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5412 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5413 | if (od->icontimer) |
| 8287 | 5414 | gaim_timeout_remove(od->icontimer); |
| 8273 | 5415 | od->icontimer = gaim_timeout_add(500, gaim_icon_timerfunc, gc); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5416 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5417 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5418 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5419 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5420 | static int gaim_icon_parseicon(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 5421 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5422 | OscarData *od = gc->proto_data; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5423 | GSList *cur; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5424 | va_list ap; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5425 | char *sn; |
|
11024
f4e005b0922b
[gaim-migrate @ 12897]
Evan Schoenberg <evands@pidgin.im>
parents:
11005
diff
changeset
|
5426 | fu8_t iconcsumtype, *iconcsum, *icon; |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
5427 | fu16_t iconcsumlen, iconlen; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5428 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5429 | va_start(ap, fr); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5430 | sn = va_arg(ap, char *); |
|
11024
f4e005b0922b
[gaim-migrate @ 12897]
Evan Schoenberg <evands@pidgin.im>
parents:
11005
diff
changeset
|
5431 | iconcsumtype = va_arg(ap, int); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
5432 | iconcsum = va_arg(ap, fu8_t *); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
5433 | iconcsumlen = va_arg(ap, int); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5434 | icon = va_arg(ap, fu8_t *); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5435 | iconlen = va_arg(ap, int); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5436 | va_end(ap); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5437 | |
|
11024
f4e005b0922b
[gaim-migrate @ 12897]
Evan Schoenberg <evands@pidgin.im>
parents:
11005
diff
changeset
|
5438 | /* |
|
f4e005b0922b
[gaim-migrate @ 12897]
Evan Schoenberg <evands@pidgin.im>
parents:
11005
diff
changeset
|
5439 | * Some AIM clients will send a blank GIF image with iconlen 90 when |
|
f4e005b0922b
[gaim-migrate @ 12897]
Evan Schoenberg <evands@pidgin.im>
parents:
11005
diff
changeset
|
5440 | * no icon is set. Ignore these. |
|
f4e005b0922b
[gaim-migrate @ 12897]
Evan Schoenberg <evands@pidgin.im>
parents:
11005
diff
changeset
|
5441 | */ |
|
f4e005b0922b
[gaim-migrate @ 12897]
Evan Schoenberg <evands@pidgin.im>
parents:
11005
diff
changeset
|
5442 | if ((iconlen > 0) && (iconlen != 90)) { |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
5443 | char *b16; |
| 6695 | 5444 | GaimBuddy *b = gaim_find_buddy(gc->account, sn); |
|
6846
f814f02dca87
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
5445 | gaim_buddy_icons_set_for_user(gaim_connection_get_account(gc), |
|
f814f02dca87
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
5446 | sn, icon, iconlen); |
|
7106
eaeff5775818
[gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents:
7098
diff
changeset
|
5447 | b16 = gaim_base16_encode(iconcsum, iconcsumlen); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
5448 | if (b16) { |
| 7693 | 5449 | gaim_blist_node_set_string((GaimBlistNode*)b, "icon_checksum", b16); |
| 7162 | 5450 | g_free(b16); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
5451 | } |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
5452 | } |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5453 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5454 | cur = od->requesticon; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5455 | while (cur) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5456 | char *cursn = cur->data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5457 | if (!aim_sncmp(cursn, sn)) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5458 | od->requesticon = g_slist_remove(od->requesticon, cursn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5459 | free(cursn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5460 | cur = od->requesticon; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5461 | } else |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5462 | cur = cur->next; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5463 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5464 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5465 | if (od->icontimer) |
| 8287 | 5466 | gaim_timeout_remove(od->icontimer); |
| 8273 | 5467 | od->icontimer = gaim_timeout_add(250, gaim_icon_timerfunc, gc); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5468 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5469 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5470 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5471 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5472 | static gboolean gaim_icon_timerfunc(gpointer data) { |
| 5575 | 5473 | GaimConnection *gc = data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5474 | OscarData *od = gc->proto_data; |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5475 | aim_userinfo_t *userinfo; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5476 | aim_conn_t *conn; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5477 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5478 | conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_ICON); |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5479 | if (!conn) { |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5480 | if (!od->iconconnecting) { |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5481 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON); |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5482 | od->iconconnecting = TRUE; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5483 | } |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5484 | return FALSE; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5485 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5486 | |
| 5842 | 5487 | if (od->set_icon) { |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
5488 | struct stat st; |
|
11303
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
5489 | char *iconfile = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(gaim_connection_get_account(gc))); |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
5490 | if (iconfile == NULL) { |
| 8363 | 5491 | aim_ssi_delicon(od->sess); |
|
10589
4e10236e06d4
[gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents:
10574
diff
changeset
|
5492 | } else if (!g_stat(iconfile, &st)) { |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
5493 | guchar *buf = g_malloc(st.st_size); |
|
10589
4e10236e06d4
[gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents:
10574
diff
changeset
|
5494 | FILE *file = g_fopen(iconfile, "rb"); |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
5495 | if (file) { |
|
9532
32470c5a1d58
[gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
9481
diff
changeset
|
5496 | /* XXX - Use g_file_get_contents()? */ |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
5497 | fread(buf, 1, st.st_size, file); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
5498 | fclose(file); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5499 | gaim_debug_info("oscar", |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
5500 | "Uploading icon to icon server\n"); |
|
6879
cc7abcef355c
[gaim-migrate @ 7425]
Mark Doliner <markdoliner@pidgin.im>
parents:
6873
diff
changeset
|
5501 | aim_bart_upload(od->sess, buf, st.st_size); |
| 5842 | 5502 | } else |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5503 | gaim_debug_error("oscar", |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
5504 | "Can't open buddy icon file!\n"); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
5505 | g_free(buf); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
5506 | } else { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5507 | gaim_debug_error("oscar", |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
5508 | "Can't stat buddy icon file!\n"); |
| 5842 | 5509 | } |
|
11303
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
5510 | g_free(iconfile); |
| 5842 | 5511 | od->set_icon = FALSE; |
| 5512 | } | |
| 5513 | ||
| 5514 | if (!od->requesticon) { | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5515 | gaim_debug_misc("oscar", |
| 5842 | 5516 | "no more icons to request\n"); |
| 5517 | return FALSE; | |
| 5518 | } | |
| 5519 | ||
|
7045
458b55091f8b
[gaim-migrate @ 7608]
Mark Doliner <markdoliner@pidgin.im>
parents:
7038
diff
changeset
|
5520 | userinfo = aim_locate_finduserinfo(od->sess, (char *)od->requesticon->data); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5521 | if ((userinfo != NULL) && (userinfo->iconcsumlen > 0)) { |
|
11024
f4e005b0922b
[gaim-migrate @ 12897]
Evan Schoenberg <evands@pidgin.im>
parents:
11005
diff
changeset
|
5522 | aim_bart_request(od->sess, od->requesticon->data, userinfo->iconcsumtype, userinfo->iconcsum, userinfo->iconcsumlen); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5523 | return FALSE; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5524 | } else { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5525 | char *sn = od->requesticon->data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5526 | od->requesticon = g_slist_remove(od->requesticon, sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5527 | free(sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5528 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5529 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5530 | return TRUE; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5531 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
5532 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5533 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5534 | * 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
|
5535 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5536 | static int gaim_parse_msgack(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 5537 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5538 | fu16_t type; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5539 | char *sn; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5540 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5541 | va_start(ap, fr); |
| 4199 | 5542 | type = (fu16_t) va_arg(ap, unsigned int); |
| 2086 | 5543 | sn = va_arg(ap, char *); |
| 5544 | va_end(ap); | |
| 5545 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5546 | gaim_debug_info("oscar", "Sent message to %s.\n", sn); |
| 2086 | 5547 | |
| 5548 | return 1; | |
| 5549 | } | |
| 5550 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5551 | 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
|
5552 | static const char *codes[5] = { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5553 | "invalid", |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
5554 | "change", |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
5555 | "warning", |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
5556 | "limit", |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
5557 | "limit cleared", |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5558 | }; |
| 2086 | 5559 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5560 | fu16_t code, rateclass; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5561 | fu32_t windowsize, clear, alert, limit, disconnect, currentavg, maxavg; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5562 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5563 | va_start(ap, fr); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5564 | code = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5565 | rateclass= (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5566 | windowsize = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5567 | clear = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5568 | alert = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5569 | limit = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5570 | disconnect = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5571 | currentavg = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
5572 | maxavg = va_arg(ap, fu32_t); |
| 2086 | 5573 | va_end(ap); |
| 5574 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5575 | gaim_debug_misc("oscar", |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
5576 | "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
|
5577 | "clear warning at %u, limit at %u, disconnect at %u (window size = %u)\n", |
| 2086 | 5578 | (code < 5) ? codes[code] : codes[0], |
| 5579 | rateclass, | |
| 5580 | currentavg, maxavg, | |
| 5581 | alert, clear, | |
| 5582 | limit, disconnect, | |
| 5583 | windowsize); | |
| 5584 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5585 | /* XXX fix these values */ |
| 2086 | 5586 | if (code == AIM_RATE_CODE_CHANGE) { |
| 5587 | if (currentavg >= clear) | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5588 | aim_conn_setlatency(fr->conn, 0); |
| 2086 | 5589 | } else if (code == AIM_RATE_CODE_WARNING) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5590 | aim_conn_setlatency(fr->conn, windowsize/4); |
|
2909
2935ea93dfe7
[gaim-migrate @ 2922]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2906
diff
changeset
|
5591 | } else if (code == AIM_RATE_CODE_LIMIT) { |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5592 | gaim_notify_error(sess->aux_data, NULL, _("Rate limiting error."), |
|
6040
ab00305db747
[gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents:
6039
diff
changeset
|
5593 | _("The last action you attempted could not be " |
|
ab00305db747
[gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents:
6039
diff
changeset
|
5594 | "performed because you are over the rate limit. " |
|
ab00305db747
[gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents:
6039
diff
changeset
|
5595 | "Please wait 10 seconds and try again.")); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5596 | aim_conn_setlatency(fr->conn, windowsize/2); |
| 2086 | 5597 | } else if (code == AIM_RATE_CODE_CLEARLIMIT) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5598 | aim_conn_setlatency(fr->conn, 0); |
| 2086 | 5599 | } |
| 5600 | ||
| 5601 | return 1; | |
| 5602 | } | |
| 5603 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5604 | static int gaim_parse_evilnotify(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 5605 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5606 | fu16_t newevil; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
5607 | aim_userinfo_t *userinfo; |
| 2086 | 5608 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5609 | va_start(ap, fr); |
| 4199 | 5610 | newevil = (fu16_t) va_arg(ap, unsigned int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
5611 | userinfo = va_arg(ap, aim_userinfo_t *); |
| 2086 | 5612 | va_end(ap); |
| 5613 | ||
|
11285
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
5614 | #ifdef CRAZY_WARNING |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
5615 | gaim_prpl_got_account_warning_level(account, (userinfo && userinfo->sn) ? userinfo->sn : NULL, (newevil/10.0) + 0.5); |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
5616 | #endif |
| 2086 | 5617 | |
| 5618 | return 1; | |
| 5619 | } | |
| 5620 | ||
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
5621 | static int gaim_selfinfo(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
5622 | int warning_level; |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
5623 | va_list ap; |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
5624 | aim_userinfo_t *info; |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
5625 | |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
5626 | va_start(ap, fr); |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
5627 | info = va_arg(ap, aim_userinfo_t *); |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
5628 | va_end(ap); |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
5629 | |
|
11285
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
5630 | /* |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
5631 | * What's with the + 0.5? |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
5632 | * The 0.5 is basically poor-man's rounding. Normally |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
5633 | * casting "13.7" to an int will truncate to "13," but |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
5634 | * with 13.7 + 0.5 = 14.2, which becomes "14" when |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
5635 | * truncated. |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
5636 | */ |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
5637 | warning_level = info->warnlevel/10.0 + 0.5; |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
5638 | |
|
11285
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
5639 | #ifdef CRAZY_WARNING |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
5640 | gaim_presence_set_warning_level(presence, warning_level); |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
5641 | #endif |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
5642 | |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
5643 | return 1; |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
5644 | } |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
5645 | |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
5646 | static int gaim_connerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 5647 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5648 | OscarData *od = gc->proto_data; |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
5649 | va_list ap; |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
5650 | fu16_t code; |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
5651 | char *msg; |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
5652 | |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
5653 | va_start(ap, fr); |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
5654 | code = (fu16_t)va_arg(ap, int); |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
5655 | msg = va_arg(ap, char *); |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
5656 | va_end(ap); |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
5657 | |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
5658 | gaim_debug_info("oscar", "Disconnected. Code is 0x%04x and msg is %s\n", |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5659 | code, (msg != NULL ? msg : "")); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5660 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5661 | g_return_val_if_fail(fr != NULL, 1); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5662 | g_return_val_if_fail(fr->conn != NULL, 1); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5663 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5664 | if (fr->conn->type == AIM_CONN_TYPE_BOS) { |
| 4651 | 5665 | if (code == 0x0001) { |
|
6113
5bc7394e69ea
[gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents:
6066
diff
changeset
|
5666 | gc->wants_to_die = TRUE; |
|
10715
0fbdd12b2a6a
[gaim-migrate @ 12309]
Mark Doliner <markdoliner@pidgin.im>
parents:
10683
diff
changeset
|
5667 | gaim_connection_error(gc, _("You have signed on from another location.")); |
| 4651 | 5668 | } else { |
| 5579 | 5669 | gaim_connection_error(gc, _("You have been signed off for an unknown reason.")); |
| 4651 | 5670 | } |
|
4666
fd74a2faaf94
[gaim-migrate @ 4977]
Mark Doliner <markdoliner@pidgin.im>
parents:
4665
diff
changeset
|
5671 | od->killme = TRUE; |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5672 | } else if (fr->conn->type == AIM_CONN_TYPE_CHAT) { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5673 | struct chat_connection *cc; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5674 | GaimConversation *conv; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5675 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5676 | cc = find_oscar_chat_by_conn(gc, fr->conn); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5677 | conv = gaim_find_chat(gc, cc->id); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5678 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5679 | if (conv != NULL) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5680 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5681 | gchar *buf; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5682 | buf = g_strdup_printf(_("You have been disconnected from chat " |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5683 | "room %s."), cc->name); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5684 | gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_ERROR, time(NULL)); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5685 | g_free(buf); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5686 | } |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5687 | oscar_chat_kill(gc, cc); |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
5688 | } |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
5689 | |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
5690 | return 1; |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
5691 | } |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
5692 | |
| 2675 | 5693 | static int conninitdone_bos(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5694 | GaimConnection *gc = sess->aux_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5695 | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
5696 | aim_reqpersonalinfo(sess, fr->conn); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5697 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5698 | gaim_debug_info("oscar", "ssi: requesting rights and list\n"); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
5699 | aim_ssi_reqrights(sess); |
| 6350 | 5700 | aim_ssi_reqdata(sess); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5701 | |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5702 | aim_locate_reqrights(sess); |
|
7285
b9d07d0c9bc2
[gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents:
7283
diff
changeset
|
5703 | aim_buddylist_reqrights(sess, fr->conn); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5704 | aim_im_reqparams(sess); |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5705 | aim_bos_reqrights(sess, fr->conn); /* XXX - Don't call this with ssi */ |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5706 | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5707 | gaim_connection_update_progress(gc, _("Finalizing connection"), 5, OSCAR_CONNECT_STEPS); |
|
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5708 | |
| 2086 | 5709 | return 1; |
| 5710 | } | |
| 5711 | ||
| 2675 | 5712 | static int conninitdone_admin(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 5713 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5714 | OscarData *od = gc->proto_data; |
| 2647 | 5715 | |
|
6905
dd40a6134713
[gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents:
6879
diff
changeset
|
5716 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ADM, 0x0003, gaim_info_change, 0); |
|
dd40a6134713
[gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents:
6879
diff
changeset
|
5717 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ADM, 0x0005, gaim_info_change, 0); |
|
dd40a6134713
[gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents:
6879
diff
changeset
|
5718 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ADM, 0x0007, gaim_account_confirm, 0); |
|
dd40a6134713
[gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents:
6879
diff
changeset
|
5719 | |
| 2672 | 5720 | aim_clientready(sess, fr->conn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5721 | gaim_debug_info("oscar", "connected to admin\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5722 | |
| 2647 | 5723 | if (od->chpass) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5724 | gaim_debug_info("oscar", "changing password\n"); |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
5725 | aim_admin_changepasswd(sess, fr->conn, od->newp, od->oldp); |
| 2647 | 5726 | g_free(od->oldp); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5727 | od->oldp = NULL; |
| 2647 | 5728 | g_free(od->newp); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5729 | od->newp = NULL; |
| 2647 | 5730 | od->chpass = FALSE; |
| 5731 | } | |
| 2979 | 5732 | if (od->setnick) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5733 | gaim_debug_info("oscar", "formatting screen name\n"); |
| 2979 | 5734 | aim_admin_setnick(sess, fr->conn, od->newsn); |
| 5735 | g_free(od->newsn); | |
| 5736 | od->newsn = NULL; | |
| 5737 | od->setnick = FALSE; | |
| 5738 | } | |
| 2647 | 5739 | if (od->conf) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5740 | gaim_debug_info("oscar", "confirming account\n"); |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
5741 | aim_admin_reqconfirm(sess, fr->conn); |
| 2647 | 5742 | od->conf = FALSE; |
| 5743 | } | |
| 5744 | if (od->reqemail) { | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5745 | gaim_debug_info("oscar", "requesting email\n"); |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
5746 | aim_admin_getinfo(sess, fr->conn, 0x0011); |
| 2647 | 5747 | od->reqemail = FALSE; |
| 5748 | } | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5749 | if (od->setemail) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5750 | gaim_debug_info("oscar", "setting email\n"); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5751 | aim_admin_setemail(sess, fr->conn, od->email); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5752 | g_free(od->email); |
|
5497
da3c08f3af25
[gaim-migrate @ 5893]
Mark Doliner <markdoliner@pidgin.im>
parents:
5493
diff
changeset
|
5753 | od->email = NULL; |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5754 | od->setemail = FALSE; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5755 | } |
| 2647 | 5756 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5757 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5758 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5759 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5760 | 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
|
5761 | struct aim_icbmparameters *params; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5762 | va_list ap; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5763 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5764 | va_start(ap, fr); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5765 | params = va_arg(ap, struct aim_icbmparameters *); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5766 | va_end(ap); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5767 | |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
5768 | /* XXX - evidently this crashes on solaris. i have no clue why |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5769 | 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
|
5770 | "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
|
5771 | params->maxchan, params->flags, params->maxmsglen, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5772 | ((float)params->maxsenderwarn)/10.0, ((float)params->maxrecverwarn)/10.0, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5773 | params->minmsginterval); |
|
2427
761801814c88
[gaim-migrate @ 2440]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2421
diff
changeset
|
5774 | */ |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5775 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5776 | /* Maybe senderwarn and recverwarn should be user preferences... */ |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
5777 | params->flags = 0x0000000b; |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5778 | params->maxmsglen = 8000; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5779 | params->minmsginterval = 0; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5780 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5781 | aim_im_setparams(sess, params); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5782 | |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5783 | return 1; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5784 | } |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5785 | |
| 2993 | 5786 | static int gaim_parse_locaterights(aim_session_t *sess, aim_frame_t *fr, ...) |
| 5787 | { | |
| 5575 | 5788 | GaimConnection *gc = sess->aux_data; |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
5789 | GaimAccount *account = gaim_connection_get_account(gc); |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5790 | OscarData *od = (OscarData *)gc->proto_data; |
|
5306
1707fdf8c530
[gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
5791 | va_list ap; |
|
1707fdf8c530
[gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
5792 | fu16_t maxsiglen; |
| 2993 | 5793 | |
| 5794 | va_start(ap, fr); | |
| 4199 | 5795 | maxsiglen = (fu16_t) va_arg(ap, int); |
| 2993 | 5796 | va_end(ap); |
| 5797 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5798 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5799 | "locate rights: max sig len = %d\n", maxsiglen); |
| 2993 | 5800 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5801 | od->rights.maxsiglen = od->rights.maxawaymsglen = (guint)maxsiglen; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5802 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5803 | if (od->icq) |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5804 | aim_locate_setcaps(od->sess, caps_icq); |
|
5301
38f02eecad54
[gaim-migrate @ 5673]
Mark Doliner <markdoliner@pidgin.im>
parents:
5300
diff
changeset
|
5805 | else |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5806 | aim_locate_setcaps(od->sess, caps_aim); |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
5807 | oscar_set_info_and_status(account, TRUE, account->user_info, TRUE, |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
5808 | gaim_account_get_active_status(account)); |
| 2993 | 5809 | |
| 5810 | return 1; | |
| 5811 | } | |
| 5812 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5813 | 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
|
5814 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5815 | fu16_t maxbuddies, maxwatchers; |
| 5575 | 5816 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5817 | OscarData *od = (OscarData *)gc->proto_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5818 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5819 | va_start(ap, fr); |
| 4199 | 5820 | maxbuddies = (fu16_t) va_arg(ap, unsigned int); |
| 5821 | maxwatchers = (fu16_t) va_arg(ap, unsigned int); | |
| 2086 | 5822 | va_end(ap); |
| 5823 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5824 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5825 | "buddy list rights: Max buddies = %hu / Max watchers = %hu\n", maxbuddies, maxwatchers); |
| 2086 | 5826 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5827 | od->rights.maxbuddies = (guint)maxbuddies; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5828 | od->rights.maxwatchers = (guint)maxwatchers; |
| 2993 | 5829 | |
| 2086 | 5830 | return 1; |
| 5831 | } | |
| 5832 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5833 | static int gaim_bosrights(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
11808
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
5834 | GaimConnection *gc; |
|
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
5835 | OscarData *od; |
|
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
5836 | GaimAccount *account; |
|
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
5837 | GaimStatus *status; |
|
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
5838 | const char *message; |
|
12344
5dade80f1792
[gaim-migrate @ 14648]
Mark Doliner <markdoliner@pidgin.im>
parents:
12317
diff
changeset
|
5839 | char *tmp; |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5840 | va_list ap; |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5841 | fu16_t maxpermits, maxdenies; |
| 2086 | 5842 | |
|
11808
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
5843 | gc = sess->aux_data; |
|
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
5844 | od = (OscarData *)gc->proto_data; |
|
11809
4c511577abb2
[gaim-migrate @ 14100]
Mark Doliner <markdoliner@pidgin.im>
parents:
11808
diff
changeset
|
5845 | account = gaim_connection_get_account(gc); |
|
11808
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
5846 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5847 | va_start(ap, fr); |
| 4199 | 5848 | maxpermits = (fu16_t) va_arg(ap, unsigned int); |
| 5849 | maxdenies = (fu16_t) va_arg(ap, unsigned int); | |
| 2086 | 5850 | va_end(ap); |
| 5851 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5852 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5853 | "BOS rights: Max permit = %hu / Max deny = %hu\n", maxpermits, maxdenies); |
| 2086 | 5854 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5855 | od->rights.maxpermits = (guint)maxpermits; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5856 | od->rights.maxdenies = (guint)maxdenies; |
| 2993 | 5857 | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
5858 | gaim_connection_set_state(gc, GAIM_CONNECTED); |
| 2993 | 5859 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5860 | gaim_debug_info("oscar", "buddy list loaded\n"); |
| 2993 | 5861 | |
| 2672 | 5862 | aim_clientready(sess, fr->conn); |
|
11808
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
5863 | |
|
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
5864 | /* Set our available message based on the current status */ |
|
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
5865 | status = gaim_account_get_active_status(account); |
|
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
5866 | if (gaim_status_is_available(status)) |
|
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
5867 | message = gaim_status_get_attr_string(status, "message"); |
|
11810
54a7031fdf39
[gaim-migrate @ 14101]
Mark Doliner <markdoliner@pidgin.im>
parents:
11809
diff
changeset
|
5868 | else |
|
54a7031fdf39
[gaim-migrate @ 14101]
Mark Doliner <markdoliner@pidgin.im>
parents:
11809
diff
changeset
|
5869 | message = NULL; |
|
12344
5dade80f1792
[gaim-migrate @ 14648]
Mark Doliner <markdoliner@pidgin.im>
parents:
12317
diff
changeset
|
5870 | tmp = gaim_markup_strip_html(message); |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
5871 | aim_srv_setstatusmsg(sess, tmp); |
|
12344
5dade80f1792
[gaim-migrate @ 14648]
Mark Doliner <markdoliner@pidgin.im>
parents:
12317
diff
changeset
|
5872 | free(tmp); |
|
11808
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
5873 | |
|
7474
757569d68123
[gaim-migrate @ 8087]
Mark Doliner <markdoliner@pidgin.im>
parents:
7465
diff
changeset
|
5874 | aim_srv_setidle(sess, 0); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5875 | |
|
4664
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
5876 | if (od->icq) { |
|
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
5877 | aim_icq_reqofflinemsgs(sess); |
| 10570 | 5878 | aim_icq_setsecurity(sess, |
| 5879 | gaim_account_get_bool(account, "authorization", OSCAR_DEFAULT_AUTHORIZATION), | |
| 5880 | gaim_account_get_bool(account, "web_aware", OSCAR_DEFAULT_WEB_AWARE), | |
| 5881 | gaim_account_get_bool(account, "hide_ip", OSCAR_DEFAULT_HIDE_IP)); | |
|
4664
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
5882 | } |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5883 | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
5884 | aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV); |
|
4102
06290da3f88d
[gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents:
4076
diff
changeset
|
5885 | if (sess->authinfo->email) |
|
06290da3f88d
[gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents:
4076
diff
changeset
|
5886 | aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_EMAIL); |
| 2086 | 5887 | |
| 5888 | return 1; | |
| 5889 | } | |
| 5890 | ||
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5891 | 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
|
5892 | va_list ap; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5893 | struct aim_icq_offlinemsg *msg; |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
5894 | struct aim_incomingim_ch4_args args; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
5895 | time_t t; |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5896 | |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5897 | va_start(ap, fr); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5898 | msg = va_arg(ap, struct aim_icq_offlinemsg *); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5899 | va_end(ap); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5900 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5901 | gaim_debug_info("oscar", |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
5902 | "Received offline message. Converting to channel 4 ICBM...\n"); |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
5903 | args.uin = msg->sender; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
5904 | args.type = msg->type; |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
5905 | args.flags = msg->flags; |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
5906 | args.msglen = msg->msglen; |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
5907 | args.msg = msg->msg; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
5908 | t = gaim_time_build(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0); |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
5909 | incomingim_chan4(sess, fr->conn, NULL, &args, t); |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5910 | |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5911 | return 1; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5912 | } |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5913 | |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5914 | 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
|
5915 | { |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5916 | aim_icq_ackofflinemsgs(sess); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5917 | return 1; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5918 | } |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
5919 | |
|
7388
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5920 | #if 0 |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5921 | /* |
|
7465
17e1e9e996ad
[gaim-migrate @ 8078]
Mark Doliner <markdoliner@pidgin.im>
parents:
7422
diff
changeset
|
5922 | * Update, 2003-11-09: |
|
17e1e9e996ad
[gaim-migrate @ 8078]
Mark Doliner <markdoliner@pidgin.im>
parents:
7422
diff
changeset
|
5923 | * Joseph S. Myers, a gcc dude, fixed this for gcc 3.4! Rock on! |
|
17e1e9e996ad
[gaim-migrate @ 8078]
Mark Doliner <markdoliner@pidgin.im>
parents:
7422
diff
changeset
|
5924 | * |
|
7388
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5925 | * It may not be my place to do this, but... |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5926 | * I feel pretty strongly that the "last 2 digits" warning is ridiculously |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5927 | * stupid, and should not exist for % switches (%x in our case) that request |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5928 | * a year in the preferred representation for the current locale. For that |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5929 | * reason I've chosen to not use this workaround (n., see kluge). |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5930 | * |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5931 | * I have a date. I want to show it to the user in the "preferred" way. |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5932 | * Whether that displays a 2 digit year is perfectly fine--after all, it's |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5933 | * what the locale wanted. |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5934 | * |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5935 | * If I have a necessity for a full representation of the year in the current |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5936 | * locale, then I'll use a switch that returns a full representation of the |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5937 | * year. |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5938 | * |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5939 | * If you think the preferred locale should show 4 digits instead of 2 digits |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5940 | * (because you're anal, or whatever), then change the f***ing locale. |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5941 | * |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5942 | * I guess the bottom line is--I'm trying to show a date to the user how they |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5943 | * prefer to see it, why the hell does gcc want me to change that? |
|
7389
56f574d188b3
[gaim-migrate @ 7984]
Mark Doliner <markdoliner@pidgin.im>
parents:
7388
diff
changeset
|
5944 | * |
|
56f574d188b3
[gaim-migrate @ 7984]
Mark Doliner <markdoliner@pidgin.im>
parents:
7388
diff
changeset
|
5945 | * See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=3190 |
|
56f574d188b3
[gaim-migrate @ 7984]
Mark Doliner <markdoliner@pidgin.im>
parents:
7388
diff
changeset
|
5946 | * See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8714 |
|
7388
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5947 | */ |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5948 | |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5949 | /* |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5950 | * This function was recommended by the STRFTIME(3) man page to remove the |
| 7386 | 5951 | * "last 2 digits" warning. |
| 5952 | */ | |
|
10157
650fd69090cd
[gaim-migrate @ 11237]
Mark Doliner <markdoliner@pidgin.im>
parents:
10152
diff
changeset
|
5953 | static size_t my_strftime(char *s, size_t max, const char *fmt, |
| 7386 | 5954 | const struct tm *tm) |
| 5955 | { | |
| 5956 | return strftime(s, max, fmt, tm); | |
| 5957 | } | |
| 10636 | 5958 | |
| 5959 | /* | |
| 5960 | * Before even realizing this was here, I went and did the same thing in util.c. | |
| 5961 | * | |
| 5962 | * Use gaim_strftime() | |
| 5963 | */ | |
| 5964 | ||
|
7388
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5965 | #endif |
| 7386 | 5966 | |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5967 | 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
|
5968 | { |
| 5575 | 5969 | GaimConnection *gc = sess->aux_data; |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5970 | OscarData *od = (OscarData *)gc->proto_data; |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5971 | GaimBuddy *buddy; |
| 8853 | 5972 | struct buddyinfo *bi = NULL; |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5973 | gchar who[16]; |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5974 | GString *str; |
|
11533
f58436975d44
[gaim-migrate @ 13782]
Richard Laager <rlaager@pidgin.im>
parents:
11532
diff
changeset
|
5975 | gchar *utf8; |
|
9634
166f3ac40f4a
[gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents:
9631
diff
changeset
|
5976 | const gchar *alias; |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
5977 | va_list ap; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
5978 | struct aim_icq_info *info; |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
5979 | |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
5980 | va_start(ap, fr); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
5981 | info = va_arg(ap, struct aim_icq_info *); |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
5982 | va_end(ap); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
5983 | |
|
4664
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
5984 | if (!info->uin) |
|
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
5985 | return 0; |
|
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
5986 | |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5987 | str = g_string_sized_new(100); |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
5988 | g_snprintf(who, sizeof(who), "%u", info->uin); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5989 | buddy = gaim_find_buddy(gaim_connection_get_account(gc), who); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5990 | if (buddy != NULL) |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5991 | bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(buddy->account, buddy->name)); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5992 | |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5993 | g_string_append_printf(str, "<b>%s:</b> %s", _("UIN"), who); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5994 | oscar_string_append(str, "\n<br>", _("Nick"), info->nick); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5995 | if ((bi != NULL) && (bi->ipaddr != 0)) { |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5996 | char *tstr = g_strdup_printf("%hhu.%hhu.%hhu.%hhu", |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5997 | (bi->ipaddr & 0xff000000) >> 24, |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5998 | (bi->ipaddr & 0x00ff0000) >> 16, |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5999 | (bi->ipaddr & 0x0000ff00) >> 8, |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6000 | (bi->ipaddr & 0x000000ff)); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6001 | oscar_string_append(str, "\n<br>", _("IP Address"), tstr); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6002 | g_free(tstr); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6003 | } |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6004 | oscar_string_append(str, "\n<br>", _("First Name"), info->first); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6005 | oscar_string_append(str, "\n<br>", _("Last Name"), info->last); |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
6006 | if (info->email && info->email[0] && (utf8 = gaim_utf8_try_convert(info->email))) { |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6007 | g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"mailto:%s\">%s</a>", _("Email Address"), utf8, utf8); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6008 | g_free(utf8); |
|
4625
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
6009 | } |
|
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
6010 | if (info->numaddresses && info->email2) { |
|
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
6011 | int i; |
|
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
6012 | for (i = 0; i < info->numaddresses; i++) { |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
6013 | if (info->email2[i] && info->email2[i][0] && (utf8 = gaim_utf8_try_convert(info->email2[i]))) { |
|
10683
0bec78ccb037
[gaim-migrate @ 12230]
Mark Doliner <markdoliner@pidgin.im>
parents:
10674
diff
changeset
|
6014 | g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"mailto:%s\">%s</a>", _("Email Address"), utf8, utf8); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6015 | g_free(utf8); |
| 4643 | 6016 | } |
|
4625
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
6017 | } |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
6018 | } |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6019 | oscar_string_append(str, "\n<br>", _("Mobile Phone"), info->mobile); |
|
10022
b5bb3bdd4d1a
[gaim-migrate @ 10954]
Mark Doliner <markdoliner@pidgin.im>
parents:
10009
diff
changeset
|
6020 | if (info->gender != 0) |
|
b5bb3bdd4d1a
[gaim-migrate @ 10954]
Mark Doliner <markdoliner@pidgin.im>
parents:
10009
diff
changeset
|
6021 | oscar_string_append(str, "\n<br>", _("Gender"), info->gender == 1 ? _("Female") : _("Male")); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
6022 | if (info->birthyear || info->birthmonth || info->birthday) { |
|
4627
4895653771a7
[gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents:
4625
diff
changeset
|
6023 | char date[30]; |
|
4895653771a7
[gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents:
4625
diff
changeset
|
6024 | struct tm tm; |
|
4895653771a7
[gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents:
4625
diff
changeset
|
6025 | tm.tm_mday = (int)info->birthday; |
|
4895653771a7
[gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents:
4625
diff
changeset
|
6026 | tm.tm_mon = (int)info->birthmonth-1; |
|
4895653771a7
[gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents:
4625
diff
changeset
|
6027 | tm.tm_year = (int)info->birthyear-1900; |
| 10636 | 6028 | gaim_strftime(date, sizeof(date), "%x", &tm); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6029 | oscar_string_append(str, "\n<br>", _("Birthday"), date); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
6030 | } |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
6031 | if (info->age) { |
|
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
6032 | char age[5]; |
|
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
6033 | snprintf(age, sizeof(age), "%hhd", info->age); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6034 | oscar_string_append(str, "\n<br>", _("Age"), age); |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
6035 | } |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
6036 | if (info->personalwebpage && info->personalwebpage[0] && (utf8 = gaim_utf8_try_convert(info->personalwebpage))) { |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6037 | g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Personal Web Page"), utf8, utf8); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6038 | g_free(utf8); |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
6039 | } |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
6040 | if (info->info && info->info[0] && (utf8 = gaim_utf8_try_convert(info->info))) { |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6041 | g_string_append_printf(str, "<hr><b>%s:</b><br>%s", _("Additional Information"), utf8); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6042 | g_free(utf8); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6043 | } |
|
10683
0bec78ccb037
[gaim-migrate @ 12230]
Mark Doliner <markdoliner@pidgin.im>
parents:
10674
diff
changeset
|
6044 | g_string_append_printf(str, "<hr>"); |
|
4641
bcc6f5e3018a
[gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents:
4634
diff
changeset
|
6045 | if ((info->homeaddr && (info->homeaddr[0])) || (info->homecity && info->homecity[0]) || (info->homestate && info->homestate[0]) || (info->homezip && info->homezip[0])) { |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6046 | g_string_append_printf(str, "<b>%s:</b>", _("Home Address")); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6047 | oscar_string_append(str, "\n<br>", _("Address"), info->homeaddr); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6048 | oscar_string_append(str, "\n<br>", _("City"), info->homecity); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6049 | oscar_string_append(str, "\n<br>", _("State"), info->homestate); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6050 | oscar_string_append(str, "\n<br>", _("Zip Code"), info->homezip); |
|
10683
0bec78ccb037
[gaim-migrate @ 12230]
Mark Doliner <markdoliner@pidgin.im>
parents:
10674
diff
changeset
|
6051 | g_string_append_printf(str, "\n<hr>"); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
6052 | } |
|
4641
bcc6f5e3018a
[gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents:
4634
diff
changeset
|
6053 | if ((info->workaddr && info->workaddr[0]) || (info->workcity && info->workcity[0]) || (info->workstate && info->workstate[0]) || (info->workzip && info->workzip[0])) { |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6054 | g_string_append_printf(str, "<b>%s:</b>", _("Work Address")); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6055 | oscar_string_append(str, "\n<br>", _("Address"), info->workaddr); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6056 | oscar_string_append(str, "\n<br>", _("City"), info->workcity); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6057 | oscar_string_append(str, "\n<br>", _("State"), info->workstate); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6058 | oscar_string_append(str, "\n<br>", _("Zip Code"), info->workzip); |
|
10683
0bec78ccb037
[gaim-migrate @ 12230]
Mark Doliner <markdoliner@pidgin.im>
parents:
10674
diff
changeset
|
6059 | g_string_append_printf(str, "\n<hr>"); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
6060 | } |
|
4641
bcc6f5e3018a
[gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents:
4634
diff
changeset
|
6061 | if ((info->workcompany && info->workcompany[0]) || (info->workdivision && info->workdivision[0]) || (info->workposition && info->workposition[0]) || (info->workwebpage && info->workwebpage[0])) { |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6062 | g_string_append_printf(str, "<b>%s:</b>", _("Work Information")); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6063 | oscar_string_append(str, "\n<br>", _("Company"), info->workcompany); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6064 | oscar_string_append(str, "\n<br>", _("Division"), info->workdivision); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6065 | oscar_string_append(str, "\n<br>", _("Position"), info->workposition); |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
6066 | if (info->workwebpage && info->workwebpage[0] && (utf8 = gaim_utf8_try_convert(info->workwebpage))) { |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6067 | g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Web Page"), utf8, utf8); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6068 | g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
6069 | } |
|
10683
0bec78ccb037
[gaim-migrate @ 12230]
Mark Doliner <markdoliner@pidgin.im>
parents:
10674
diff
changeset
|
6070 | g_string_append_printf(str, "\n<hr>"); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6071 | } |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6072 | |
|
9634
166f3ac40f4a
[gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents:
9631
diff
changeset
|
6073 | if (buddy != NULL) |
|
166f3ac40f4a
[gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents:
9631
diff
changeset
|
6074 | alias = gaim_buddy_get_alias(buddy); |
|
166f3ac40f4a
[gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents:
9631
diff
changeset
|
6075 | else |
|
166f3ac40f4a
[gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents:
9631
diff
changeset
|
6076 | alias = who; |
|
11533
f58436975d44
[gaim-migrate @ 13782]
Richard Laager <rlaager@pidgin.im>
parents:
11532
diff
changeset
|
6077 | gaim_notify_userinfo(gc, who, str->str, NULL, NULL); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
6078 | g_string_free(str, TRUE); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
6079 | |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
6080 | return 1; |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
6081 | } |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
6082 | |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6083 | 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
|
6084 | { |
| 5575 | 6085 | GaimConnection *gc = sess->aux_data; |
|
4820
1e869f00810b
[gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents:
4819
diff
changeset
|
6086 | gchar who[16], *utf8; |
| 6695 | 6087 | GaimBuddy *b; |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6088 | va_list ap; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6089 | struct aim_icq_info *info; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6090 | |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6091 | va_start(ap, fr); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6092 | info = va_arg(ap, struct aim_icq_info *); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6093 | va_end(ap); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6094 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
6095 | if (info->uin && info->nick && info->nick[0] && (utf8 = gaim_utf8_try_convert(info->nick))) { |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
6096 | g_snprintf(who, sizeof(who), "%u", info->uin); |
|
4820
1e869f00810b
[gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents:
4819
diff
changeset
|
6097 | serv_got_alias(gc, who, utf8); |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6098 | if ((b = gaim_find_buddy(gc->account, who))) { |
| 7693 | 6099 | gaim_blist_node_set_string((GaimBlistNode*)b, "servernick", utf8); |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6100 | } |
|
4820
1e869f00810b
[gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents:
4819
diff
changeset
|
6101 | g_free(utf8); |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6102 | } |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6103 | |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6104 | return 1; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6105 | } |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6106 | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6107 | 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
|
6108 | { |
|
7032
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
6109 | GaimConnection *gc = sess->aux_data; |
|
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
6110 | gchar *text; |
|
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
6111 | va_list ap; |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6112 | char *msg, *url; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6113 | fu16_t wid, hei, delay; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6114 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6115 | va_start(ap, fr); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6116 | msg = va_arg(ap, char *); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6117 | url = va_arg(ap, char *); |
| 4199 | 6118 | wid = (fu16_t) va_arg(ap, int); |
| 6119 | hei = (fu16_t) va_arg(ap, int); | |
| 6120 | delay = (fu16_t) va_arg(ap, int); | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6121 | va_end(ap); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6122 | |
|
7032
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
6123 | text = g_strdup_printf("%s<br><a href=\"%s\">%s</a>", msg, url, url); |
|
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
6124 | gaim_notify_formatted(gc, NULL, _("Pop-Up Message"), NULL, text, NULL, NULL); |
|
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
6125 | g_free(text); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6126 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6127 | return 1; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6128 | } |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6129 | |
| 11359 | 6130 | static void oscar_searchresults_add_buddy_cb(GaimConnection *gc, GList *row) |
| 6131 | { | |
| 6132 | gaim_blist_request_add_buddy(gaim_connection_get_account(gc), | |
| 6133 | g_list_nth_data(row, 0), NULL, NULL); | |
| 6134 | } | |
| 6135 | ||
|
7032
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
6136 | static int gaim_parse_searchreply(aim_session_t *sess, aim_frame_t *fr, ...) |
|
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
6137 | { |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6138 | GaimConnection *gc = sess->aux_data; |
| 11359 | 6139 | GaimNotifySearchResults *results; |
| 6140 | GaimNotifySearchColumn *column; | |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6141 | gchar *secondary; |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6142 | int i, num; |
| 2086 | 6143 | va_list ap; |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6144 | char *email, *SNs; |
| 2086 | 6145 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6146 | va_start(ap, fr); |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6147 | email = va_arg(ap, char *); |
| 2086 | 6148 | num = va_arg(ap, int); |
| 6149 | SNs = va_arg(ap, char *); | |
| 6150 | va_end(ap); | |
| 6151 | ||
| 12257 | 6152 | results = gaim_notify_searchresults_new(); |
| 6153 | ||
| 6154 | if (results == NULL) { | |
| 6155 | gaim_debug_error("oscar", "gaim_parse_searchreply: " | |
| 6156 | "Unable to display the search results.\n"); | |
| 6157 | gaim_notify_error(gc, NULL, | |
| 6158 | _("Unable to display the search results."), | |
| 6159 | NULL); | |
|
12260
4b2e29383b0e
[gaim-migrate @ 14562]
Mark Doliner <markdoliner@pidgin.im>
parents:
12257
diff
changeset
|
6160 | return 1; |
| 12257 | 6161 | } |
| 6162 | ||
|
12254
af73b85cad3d
[gaim-migrate @ 14556]
Richard Laager <rlaager@pidgin.im>
parents:
12243
diff
changeset
|
6163 | secondary = g_strdup_printf( |
|
af73b85cad3d
[gaim-migrate @ 14556]
Richard Laager <rlaager@pidgin.im>
parents:
12243
diff
changeset
|
6164 | ngettext("The following screen name is associated with %s", |
|
af73b85cad3d
[gaim-migrate @ 14556]
Richard Laager <rlaager@pidgin.im>
parents:
12243
diff
changeset
|
6165 | "The following screen names are associated with %s", |
|
af73b85cad3d
[gaim-migrate @ 14556]
Richard Laager <rlaager@pidgin.im>
parents:
12243
diff
changeset
|
6166 | num), |
|
af73b85cad3d
[gaim-migrate @ 14556]
Richard Laager <rlaager@pidgin.im>
parents:
12243
diff
changeset
|
6167 | email); |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10405
diff
changeset
|
6168 | |
| 11359 | 6169 | column = gaim_notify_searchresults_column_new("Screen name"); |
| 6170 | gaim_notify_searchresults_column_add(results, column); | |
| 6171 | ||
| 6172 | for (i = 0; i < num; i++) { | |
| 6173 | GList *row = NULL; | |
| 6174 | row = g_list_append(row, g_strdup(&SNs[i * (MAXSNLEN + 1)])); | |
| 6175 | gaim_notify_searchresults_row_add(results, row); | |
| 6176 | } | |
| 6177 | gaim_notify_searchresults_button_add(results, GAIM_NOTIFY_BUTTON_ADD_BUDDY, | |
| 6178 | oscar_searchresults_add_buddy_cb); | |
| 6179 | gaim_notify_searchresults(gc, NULL, NULL, secondary, results, NULL, NULL); | |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6180 | |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6181 | g_free(secondary); |
| 2086 | 6182 | |
| 6183 | return 1; | |
| 6184 | } | |
| 6185 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6186 | static int gaim_parse_searcherror(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 6187 | va_list ap; |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6188 | char *email; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
6189 | char *buf; |
| 2086 | 6190 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6191 | va_start(ap, fr); |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6192 | email = va_arg(ap, char *); |
| 2086 | 6193 | va_end(ap); |
| 6194 | ||
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6195 | buf = g_strdup_printf(_("No results found for email address %s"), email); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
6196 | gaim_notify_error(sess->aux_data, NULL, buf, NULL); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
6197 | g_free(buf); |
| 2086 | 6198 | |
| 6199 | return 1; | |
| 6200 | } | |
| 6201 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6202 | static int gaim_account_confirm(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6203 | GaimConnection *gc = sess->aux_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6204 | fu16_t status; |
| 2086 | 6205 | va_list ap; |
| 6206 | char msg[256]; | |
| 6207 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6208 | va_start(ap, fr); |
| 4199 | 6209 | status = (fu16_t) va_arg(ap, unsigned int); /* status code of confirmation request */ |
| 2086 | 6210 | va_end(ap); |
| 6211 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6212 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6213 | "account confirmation returned status 0x%04x (%s)\n", status, |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6214 | status ? "unknown" : "email sent"); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6215 | if (!status) { |
|
5302
48db3c9dc259
[gaim-migrate @ 5674]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
5301
diff
changeset
|
6216 | g_snprintf(msg, sizeof(msg), _("You should receive an email asking to confirm %s."), |
| 5575 | 6217 | gaim_account_get_username(gaim_connection_get_account(gc))); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
6218 | gaim_notify_info(gc, NULL, _("Account Confirmation Requested"), msg); |
| 2086 | 6219 | } |
| 6220 | ||
| 6221 | return 1; | |
| 6222 | } | |
| 6223 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6224 | static int gaim_info_change(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 6225 | GaimConnection *gc = sess->aux_data; |
| 2086 | 6226 | va_list ap; |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6227 | fu16_t perms, err; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6228 | char *url, *sn, *email; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6229 | int change; |
| 2086 | 6230 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6231 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6232 | change = va_arg(ap, int); |
| 4199 | 6233 | perms = (fu16_t) va_arg(ap, unsigned int); |
| 6234 | err = (fu16_t) va_arg(ap, unsigned int); | |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6235 | url = va_arg(ap, char *); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6236 | sn = va_arg(ap, char *); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6237 | email = va_arg(ap, char *); |
| 2086 | 6238 | va_end(ap); |
| 6239 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6240 | gaim_debug_misc("oscar", |
|
9626
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
6241 | "account info: because of %s, perms=0x%04x, err=0x%04x, url=%s, sn=%s, email=%s\n", |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
6242 | change ? "change" : "request", perms, err, |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
6243 | (url != NULL) ? url : "(null)", |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
6244 | (sn != NULL) ? sn : "(null)", |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
6245 | (email != NULL) ? email : "(null)"); |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
6246 | |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
6247 | if ((err > 0) && (url != NULL)) { |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6248 | char *dialog_msg; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6249 | char *dialog_top = g_strdup_printf(_("Error Changing Account Info")); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6250 | switch (err) { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6251 | case 0x0001: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6252 | 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
|
6253 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6254 | case 0x0006: { |
|
11399
2313bf7bed5b
[gaim-migrate @ 13634]
Mark Doliner <markdoliner@pidgin.im>
parents:
11369
diff
changeset
|
6255 | dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because it is invalid."), err); |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6256 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6257 | case 0x000b: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6258 | 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
|
6259 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6260 | case 0x001d: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6261 | 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
|
6262 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6263 | case 0x0021: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6264 | 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
|
6265 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6266 | case 0x0023: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6267 | 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
|
6268 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6269 | default: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6270 | dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6271 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6272 | } |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
6273 | gaim_notify_error(gc, NULL, dialog_top, dialog_msg); |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6274 | g_free(dialog_top); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6275 | g_free(dialog_msg); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6276 | return 1; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6277 | } |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6278 | |
|
9626
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
6279 | if (sn != NULL) { |
| 4585 | 6280 | 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
|
6281 | gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg); |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6282 | g_free(dialog_msg); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6283 | } |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6284 | |
|
9626
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
6285 | if (email != NULL) { |
| 5575 | 6286 | char *dialog_msg = g_strdup_printf(_("The email address for %s is %s"), |
| 6287 | gaim_account_get_username(gaim_connection_get_account(gc)), email); | |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
6288 | gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg); |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
6289 | g_free(dialog_msg); |
| 2086 | 6290 | } |
| 6291 | ||
| 6292 | return 1; | |
| 6293 | } | |
| 6294 | ||
| 5575 | 6295 | static void oscar_keepalive(GaimConnection *gc) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6296 | OscarData *od = (OscarData *)gc->proto_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6297 | aim_flap_nop(od->sess, od->conn); |
| 2086 | 6298 | } |
| 6299 | ||
|
6059
9934c862ca14
[gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents:
6053
diff
changeset
|
6300 | static int oscar_send_typing(GaimConnection *gc, const char *name, int typing) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6301 | OscarData *od = (OscarData *)gc->proto_data; |
| 8971 | 6302 | struct oscar_direct_im *dim = oscar_direct_im_find(od, name); |
| 6303 | if (dim && dim->connected) | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
6304 | if (typing == GAIM_TYPING) |
|
4870
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
6305 | aim_odc_send_typing(od->sess, dim->conn, 0x0002); |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
6306 | else if (typing == GAIM_TYPED) |
|
4870
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
6307 | aim_odc_send_typing(od->sess, dim->conn, 0x0001); |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
6308 | else |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
6309 | aim_odc_send_typing(od->sess, dim->conn, 0x0000); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
6310 | else { |
|
5300
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
6311 | /* Don't send if this turkey is in our deny list */ |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
6312 | GSList *list; |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
6313 | 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
|
6314 | if (!list) { |
| 7261 | 6315 | struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(gc->account, name)); |
|
5300
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
6316 | if (bi && bi->typingnot) { |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
6317 | if (typing == GAIM_TYPING) |
|
5300
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
6318 | aim_im_sendmtn(od->sess, 0x0001, name, 0x0002); |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
6319 | else if (typing == GAIM_TYPED) |
|
5300
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
6320 | aim_im_sendmtn(od->sess, 0x0001, name, 0x0001); |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
6321 | else |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
6322 | aim_im_sendmtn(od->sess, 0x0001, name, 0x0000); |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
6323 | } |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
6324 | } |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
6325 | } |
| 2993 | 6326 | return 0; |
| 6327 | } | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6328 | |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12189
diff
changeset
|
6329 | static int gaim_odc_send_im(aim_session_t *, aim_conn_t *, const char *, GaimMessageFlags); |
|
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12189
diff
changeset
|
6330 | |
|
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12189
diff
changeset
|
6331 | static int oscar_send_im(GaimConnection *gc, const char *name, const char *message, GaimMessageFlags imflags) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6332 | OscarData *od = (OscarData *)gc->proto_data; |
|
10246
aa5bff72f94c
[gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents:
10240
diff
changeset
|
6333 | GaimAccount *account = gaim_connection_get_account(gc); |
| 8971 | 6334 | struct oscar_direct_im *dim = oscar_direct_im_find(od, name); |
|
2303
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
6335 | int ret = 0; |
|
11303
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
6336 | char *iconfile = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(account)); |
|
10781
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
6337 | char *tmpmsg = NULL; |
|
3458
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
6338 | |
|
4838
653f06ff2acf
[gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
6339 | if (dim && dim->connected) { |
|
653f06ff2acf
[gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
6340 | /* If we're directly connected, send a direct IM */ |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6907
diff
changeset
|
6341 | ret = gaim_odc_send_im(od->sess, dim->conn, message, imflags); |
| 2086 | 6342 | } else { |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6343 | struct buddyinfo *bi; |
| 3008 | 6344 | struct aim_sendimext_args args; |
| 6345 | struct stat st; | |
|
6478
2c3fe7c8659b
[gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents:
6465
diff
changeset
|
6346 | gsize len; |
|
10246
aa5bff72f94c
[gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents:
10240
diff
changeset
|
6347 | GaimConversation *conv; |
|
aa5bff72f94c
[gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents:
10240
diff
changeset
|
6348 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
6349 | conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, name, account); |
| 8962 | 6350 | |
| 6351 | if (strstr(message, "<IMG ")) | |
| 6352 | gaim_conversation_write(conv, "", | |
| 6353 | _("Your IM Image was not sent. " | |
| 6354 | "You must be Direct Connected to send IM Images."), | |
| 6355 | GAIM_MESSAGE_ERROR, time(NULL)); | |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6356 | |
|
10246
aa5bff72f94c
[gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents:
10240
diff
changeset
|
6357 | bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, name)); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6358 | if (!bi) { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6359 | bi = g_new0(struct buddyinfo, 1); |
|
10246
aa5bff72f94c
[gaim-migrate @ 11386]
Mark Doliner <markdoliner@pidgin.im>
parents:
10240
diff
changeset
|
6360 | g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(account, name)), bi); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6361 | } |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6362 | |
| 3008 | 6363 | args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES; |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
6364 | if (od->icq) { |
|
11185
b8bfd357e6cf
[gaim-migrate @ 13297]
Mark Doliner <markdoliner@pidgin.im>
parents:
11172
diff
changeset
|
6365 | /* We have to present different "features" (whose meaning |
| 11172 | 6366 | is unclear and are merely a result of protocol inspection) |
| 6367 | to offline ICQ buddies. Otherwise, the official | |
| 6368 | ICQ client doesn't treat those messages as being "ANSI- | |
| 6369 | encoded" (and instead, assumes them to be UTF-8). | |
| 6370 | For more details, see SF issue 1179452. | |
| 6371 | */ | |
| 6372 | GaimBuddy *buddy = gaim_find_buddy(gc->account, name); | |
| 11910 | 6373 | if (buddy && GAIM_BUDDY_IS_ONLINE(buddy)) { |
| 11172 | 6374 | args.features = features_icq; |
| 6375 | args.featureslen = sizeof(features_icq); | |
| 6376 | } else { | |
| 6377 | args.features = features_icq_offline; | |
| 6378 | args.featureslen = sizeof(features_icq_offline); | |
| 6379 | } | |
| 3008 | 6380 | args.flags |= AIM_IMFLAGS_OFFLINE; |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
6381 | } else { |
|
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
6382 | args.features = features_aim; |
|
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
6383 | args.featureslen = sizeof(features_aim); |
|
4972
3dd342b21444
[gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents:
4969
diff
changeset
|
6384 | |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12189
diff
changeset
|
6385 | if (imflags & GAIM_MESSAGE_AUTO_RESP) |
|
4972
3dd342b21444
[gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents:
4969
diff
changeset
|
6386 | args.flags |= AIM_IMFLAGS_AWAY; |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
6387 | } |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6388 | |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6389 | if (bi->ico_need) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6390 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6391 | "Sending buddy icon request with message\n"); |
| 3008 | 6392 | args.flags |= AIM_IMFLAGS_BUDDYREQ; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6393 | bi->ico_need = FALSE; |
| 3008 | 6394 | } |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6395 | |
|
10589
4e10236e06d4
[gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents:
10574
diff
changeset
|
6396 | if (iconfile && !g_stat(iconfile, &st)) { |
|
4e10236e06d4
[gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents:
10574
diff
changeset
|
6397 | FILE *file = g_fopen(iconfile, "rb"); |
| 3008 | 6398 | if (file) { |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
6399 | guchar *buf = g_malloc(st.st_size); |
|
9532
32470c5a1d58
[gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
9481
diff
changeset
|
6400 | /* XXX - Use g_file_get_contents()? */ |
| 3008 | 6401 | fread(buf, 1, st.st_size, file); |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
6402 | fclose(file); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6403 | |
| 3008 | 6404 | args.iconlen = st.st_size; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6405 | args.iconsum = aimutil_iconsum(buf, st.st_size); |
| 3008 | 6406 | args.iconstamp = st.st_mtime; |
| 6407 | ||
| 7406 | 6408 | if ((args.iconlen != bi->ico_me_len) || (args.iconsum != bi->ico_me_csum) || (args.iconstamp != bi->ico_me_time)) { |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6409 | bi->ico_informed = FALSE; |
| 7406 | 6410 | bi->ico_sent = FALSE; |
| 6411 | } | |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6412 | |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6413 | if (!bi->ico_informed) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6414 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6415 | "Claiming to have a buddy icon\n"); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6416 | args.flags |= AIM_IMFLAGS_HASICON; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6417 | bi->ico_me_len = args.iconlen; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6418 | bi->ico_me_csum = args.iconsum; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6419 | bi->ico_me_time = args.iconstamp; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6420 | bi->ico_informed = TRUE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6421 | } |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
6422 | |
| 3008 | 6423 | g_free(buf); |
| 2086 | 6424 | } |
| 6425 | } | |
|
11303
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
6426 | g_free(iconfile); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6427 | |
| 3008 | 6428 | args.destsn = name; |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6429 | |
|
8985
5045635e6d86
[gaim-migrate @ 9760]
Mark Doliner <markdoliner@pidgin.im>
parents:
8984
diff
changeset
|
6430 | /* |
|
10781
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
6431 | * If we're IMing an ICQ user from an ICQ account, then strip HTML |
|
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
6432 | * and use \r\n as the newline character. |
|
8985
5045635e6d86
[gaim-migrate @ 9760]
Mark Doliner <markdoliner@pidgin.im>
parents:
8984
diff
changeset
|
6433 | */ |
|
10781
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
6434 | if (aim_sn_is_icq(gaim_account_get_username(account))) { |
|
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
6435 | if (aim_sn_is_icq(name)) |
|
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
6436 | /* From ICQ to ICQ */ |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12189
diff
changeset
|
6437 | tmpmsg = gaim_unescape_html(message); |
|
10781
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
6438 | else |
|
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
6439 | /* From ICQ to AIM */ |
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12189
diff
changeset
|
6440 | tmpmsg = g_strdup(message); |
| 8995 | 6441 | } else { |
|
10785
dddaac60f963
[gaim-migrate @ 12423]
Mark Doliner <markdoliner@pidgin.im>
parents:
10783
diff
changeset
|
6442 | /* From AIM to AIM and AIM to ICQ */ |
|
dddaac60f963
[gaim-migrate @ 12423]
Mark Doliner <markdoliner@pidgin.im>
parents:
10783
diff
changeset
|
6443 | tmpmsg = g_strdup(message); |
| 8995 | 6444 | } |
|
6310
efd8a4cbff53
[gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents:
6308
diff
changeset
|
6445 | len = strlen(tmpmsg); |
|
efd8a4cbff53
[gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents:
6308
diff
changeset
|
6446 | |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
6447 | gaim_plugin_oscar_convert_to_best_encoding(gc, name, tmpmsg, (char **)&args.msg, &args.msglen, &args.charset, &args.charsubset); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
6448 | gaim_debug_info("oscar", "Sending IM, charset=0x%04hx, charsubset=0x%04hx, length=%d\n", |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
6449 | args.charset, args.charsubset, args.msglen); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6450 | ret = aim_im_sendch1_ext(od->sess, &args); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
6451 | g_free((char *)args.msg); |
| 2086 | 6452 | } |
|
4838
653f06ff2acf
[gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
6453 | |
|
6310
efd8a4cbff53
[gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents:
6308
diff
changeset
|
6454 | g_free(tmpmsg); |
|
efd8a4cbff53
[gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents:
6308
diff
changeset
|
6455 | |
|
2303
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
6456 | if (ret >= 0) |
|
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
6457 | return 1; |
|
6310
efd8a4cbff53
[gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents:
6308
diff
changeset
|
6458 | |
|
2303
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
6459 | return ret; |
| 2086 | 6460 | } |
| 6461 | ||
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
6462 | static void oscar_get_info(GaimConnection *gc, const char *name) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6463 | OscarData *od = (OscarData *)gc->proto_data; |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
6464 | |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
6465 | if (od->icq && aim_sn_is_icq(name)) |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
6466 | aim_icq_getallinfo(od->sess, name); |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
6467 | else |
| 7235 | 6468 | aim_locate_getinfoshort(od->sess, name, 0x00000003); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
6469 | } |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
6470 | |
|
8950
1b90ece5fb4f
[gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents:
8907
diff
changeset
|
6471 | #if 0 |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
6472 | static void oscar_set_dir(GaimConnection *gc, const char *first, const char *middle, const char *last, |
| 3466 | 6473 | 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
|
6474 | /* XXX - some of these things are wrong, but i'm lazy */ |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6475 | OscarData *od = (OscarData *)gc->proto_data; |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
6476 | aim_locate_setdirinfo(od->sess, first, middle, last, |
| 2086 | 6477 | maiden, NULL, NULL, city, state, NULL, 0, web); |
| 6478 | } | |
|
8950
1b90ece5fb4f
[gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents:
8907
diff
changeset
|
6479 | #endif |
| 2086 | 6480 | |
| 5575 | 6481 | static void oscar_set_idle(GaimConnection *gc, int time) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6482 | OscarData *od = (OscarData *)gc->proto_data; |
|
7474
757569d68123
[gaim-migrate @ 8087]
Mark Doliner <markdoliner@pidgin.im>
parents:
7465
diff
changeset
|
6483 | aim_srv_setidle(od->sess, time); |
| 2086 | 6484 | } |
| 6485 | ||
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6486 | static |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6487 | gchar *gaim_prpl_oscar_convert_to_infotext(const gchar *str, gsize *ret_len, char **encoding) |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6488 | { |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
6489 | int charset = 0; |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6490 | char *encoded = NULL; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6491 | |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6492 | charset = oscar_charset_check(str); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6493 | if (charset == AIM_CHARSET_UNICODE) { |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6494 | encoded = g_convert(str, strlen(str), "UCS-2BE", "UTF-8", NULL, ret_len, NULL); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6495 | *encoding = "unicode-2-0"; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6496 | } else if (charset == AIM_CHARSET_CUSTOM) { |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6497 | encoded = g_convert(str, strlen(str), "ISO-8859-1", "UTF-8", NULL, ret_len, NULL); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6498 | *encoding = "iso-8859-1"; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6499 | } else { |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6500 | encoded = g_strdup(str); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6501 | *ret_len = strlen(str); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6502 | *encoding = "us-ascii"; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6503 | } |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6504 | |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6505 | return encoded; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6506 | } |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6507 | |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6508 | static void |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6509 | oscar_set_info(GaimConnection *gc, const char *rawinfo) |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6510 | { |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6511 | GaimAccount *account; |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6512 | GaimStatus *status; |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6513 | |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6514 | account = gaim_connection_get_account(gc); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6515 | status = gaim_account_get_active_status(account); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6516 | oscar_set_info_and_status(account, TRUE, rawinfo, FALSE, status); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6517 | } |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6518 | |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6519 | static void |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6520 | oscar_set_extendedstatus(GaimConnection *gc) |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6521 | { |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6522 | OscarData *od; |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6523 | GaimAccount *account; |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6524 | GaimPresence *presence; |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6525 | gboolean invisible; |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6526 | |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6527 | od = gc->proto_data; |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6528 | account = gaim_connection_get_account(gc); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6529 | presence = gaim_account_get_presence(account); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6530 | invisible = gaim_presence_is_status_primitive_active(presence, GAIM_STATUS_HIDDEN); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6531 | |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6532 | if (invisible) |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6533 | aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6534 | else if (!gaim_presence_is_available(presence)) |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6535 | aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6536 | else |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6537 | aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6538 | } |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6539 | |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6540 | static void |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6541 | oscar_set_info_and_status(GaimAccount *account, gboolean setinfo, const char *rawinfo, |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6542 | gboolean setstatus, GaimStatus *status) |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6543 | { |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6544 | GaimConnection *gc = gaim_account_get_connection(account); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6545 | OscarData *od = gc->proto_data; |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6546 | GaimPresence *presence; |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6547 | GaimStatusType *status_type; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6548 | GaimStatusPrimitive primitive; |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6549 | gboolean invisible; |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6550 | |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6551 | char *htmlinfo; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6552 | char *info_encoding = NULL; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6553 | char *info = NULL; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6554 | gsize infolen = 0; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6555 | |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6556 | const char *htmlaway; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6557 | char *away_encoding = NULL; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6558 | char *away = NULL; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6559 | gsize awaylen = 0; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6560 | |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6561 | status_type = gaim_status_get_type(status); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6562 | primitive = gaim_status_type_get_primitive(status_type); |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6563 | presence = gaim_account_get_presence(account); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6564 | invisible = gaim_presence_is_status_primitive_active(presence, GAIM_STATUS_HIDDEN); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6565 | |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6566 | if (!setinfo) |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6567 | { |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6568 | /* Do nothing! */ |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6569 | } |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6570 | else if (od->rights.maxsiglen == 0) |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6571 | { |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
6572 | gaim_notify_warning(gc, NULL, _("Unable to set AIM profile."), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
6573 | _("You have probably requested to set your " |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
6574 | "profile before the login procedure completed. " |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
6575 | "Your profile remains unset; try setting it " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
6576 | "again when you are fully connected.")); |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6577 | } |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6578 | else if (rawinfo != NULL) |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6579 | { |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6580 | htmlinfo = gaim_strdup_withhtml(rawinfo); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6581 | info = gaim_prpl_oscar_convert_to_infotext(htmlinfo, &infolen, &info_encoding); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6582 | g_free(htmlinfo); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6583 | |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6584 | if (infolen > od->rights.maxsiglen) |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6585 | { |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6586 | gchar *errstr; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6587 | errstr = g_strdup_printf(ngettext("The maximum profile length of %d byte " |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6588 | "has been exceeded. Gaim has truncated it for you.", |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6589 | "The maximum profile length of %d bytes " |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6590 | "has been exceeded. Gaim has truncated it for you.", |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6591 | od->rights.maxsiglen), od->rights.maxsiglen); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6592 | gaim_notify_warning(gc, NULL, _("Profile too long."), errstr); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6593 | g_free(errstr); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6594 | } |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6595 | } |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6596 | |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6597 | if (!setstatus) |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6598 | { |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6599 | /* Do nothing! */ |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6600 | } |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6601 | else if (primitive == GAIM_STATUS_AVAILABLE) |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6602 | { |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
6603 | const char *status_html; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
6604 | char *status_text; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
6605 | |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
6606 | status_html = gaim_status_get_attr_string(status, "message"); |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
6607 | if (status_html != NULL) |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6608 | { |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
6609 | status_text = gaim_markup_strip_html(status_html); |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
6610 | aim_srv_setstatusmsg(od->sess, status_text); |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
6611 | g_free(status_text); |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6612 | } |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6613 | |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6614 | /* This is needed for us to un-set any previous away message. */ |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6615 | away = g_strdup(""); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6616 | } |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6617 | else if (primitive == GAIM_STATUS_AWAY) |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6618 | { |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6619 | htmlaway = gaim_status_get_attr_string(status, "message"); |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6620 | if ((htmlaway == NULL) || (*htmlaway == '\0')) |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6621 | htmlaway = _("Away"); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6622 | away = gaim_prpl_oscar_convert_to_infotext(htmlaway, &awaylen, &away_encoding); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6623 | |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6624 | if (awaylen > od->rights.maxawaymsglen) |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6625 | { |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6626 | gchar *errstr; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6627 | |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6628 | errstr = g_strdup_printf(ngettext("The maximum away message length of %d byte " |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6629 | "has been exceeded. Gaim has truncated it for you.", |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6630 | "The maximum away message length of %d bytes " |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6631 | "has been exceeded. Gaim has truncated it for you.", |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6632 | od->rights.maxawaymsglen), od->rights.maxawaymsglen); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6633 | gaim_notify_warning(gc, NULL, _("Away message too long."), errstr); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6634 | g_free(errstr); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6635 | } |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6636 | } |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6637 | |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6638 | if (setstatus) |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6639 | oscar_set_extendedstatus(gc); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6640 | |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6641 | aim_locate_setprofile(od->sess, info_encoding, info, MIN(infolen, od->rights.maxsiglen), |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6642 | away_encoding, away, MIN(awaylen, od->rights.maxawaymsglen)); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6643 | g_free(info); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
6644 | g_free(away); |
| 2086 | 6645 | } |
| 6646 | ||
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6647 | static void |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6648 | oscar_set_status_icq(GaimAccount *account, GaimStatus *status) |
| 2993 | 6649 | { |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6650 | GaimConnection *gc = gaim_account_get_connection(account); |
| 10646 | 6651 | OscarData *od = NULL; |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6652 | const gchar *status_id = gaim_status_get_id(status); |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6653 | |
| 10646 | 6654 | if (gc) |
| 6655 | od = (OscarData *)gc->proto_data; | |
| 6656 | if (!od) | |
| 6657 | return; | |
| 6658 | ||
|
11766
1a2e988316e9
[gaim-migrate @ 14057]
Mark Doliner <markdoliner@pidgin.im>
parents:
11718
diff
changeset
|
6659 | if (gaim_status_type_get_primitive(gaim_status_get_type(status)) == GAIM_STATUS_HIDDEN) |
|
1a2e988316e9
[gaim-migrate @ 14057]
Mark Doliner <markdoliner@pidgin.im>
parents:
11718
diff
changeset
|
6660 | account->perm_deny = GAIM_PRIVACY_ALLOW_USERS; |
|
8265
ff840ad070be
[gaim-migrate @ 8988]
Mark Doliner <markdoliner@pidgin.im>
parents:
8257
diff
changeset
|
6661 | else |
|
11766
1a2e988316e9
[gaim-migrate @ 14057]
Mark Doliner <markdoliner@pidgin.im>
parents:
11718
diff
changeset
|
6662 | account->perm_deny = GAIM_PRIVACY_DENY_USERS; |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6663 | |
|
8265
ff840ad070be
[gaim-migrate @ 8988]
Mark Doliner <markdoliner@pidgin.im>
parents:
8257
diff
changeset
|
6664 | if ((od->sess->ssi.received_data) && (aim_ssi_getpermdeny(od->sess->ssi.local) != account->perm_deny)) |
|
ff840ad070be
[gaim-migrate @ 8988]
Mark Doliner <markdoliner@pidgin.im>
parents:
8257
diff
changeset
|
6665 | aim_ssi_setpermdeny(od->sess, account->perm_deny, 0xffffffff); |
| 4342 | 6666 | |
|
11522
c2a0d620f903
[gaim-migrate @ 13770]
Mark Doliner <markdoliner@pidgin.im>
parents:
11510
diff
changeset
|
6667 | if (!strcmp(status_id, OSCAR_STATUS_ID_AVAILABLE) || !strcmp(status_id, OSCAR_STATUS_ID_AVAILABLE)) |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
6668 | aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6669 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6670 | else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY)) |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
6671 | aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6672 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6673 | else if (!strcmp(status_id, OSCAR_STATUS_ID_DND)) |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
6674 | aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_DND | AIM_ICQ_STATE_BUSY); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6675 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6676 | else if (!strcmp(status_id, OSCAR_STATUS_ID_NA)) |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
6677 | aim_setextstatus(od->sess, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6678 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6679 | else if (!strcmp(status_id, OSCAR_STATUS_ID_OCCUPIED)) |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
6680 | aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_BUSY); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6681 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6682 | else if (!strcmp(status_id, OSCAR_STATUS_ID_FREE4CHAT)) |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
6683 | aim_setextstatus(od->sess, AIM_ICQ_STATE_CHAT); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6684 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6685 | else if (!strcmp(status_id, OSCAR_STATUS_ID_INVISIBLE)) |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
6686 | aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6687 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6688 | else if (!strcmp(status_id, OSCAR_STATUS_ID_CUSTOM)) |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6689 | aim_setextstatus(od->sess, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY); |
| 2993 | 6690 | } |
| 6691 | ||
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6692 | static void |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6693 | oscar_set_status(GaimAccount *account, GaimStatus *status) |
| 2993 | 6694 | { |
|
10747
aff9c0803189
[gaim-migrate @ 12349]
Mark Doliner <markdoliner@pidgin.im>
parents:
10740
diff
changeset
|
6695 | gaim_debug_info("oscar", "Set status to %s\n", gaim_status_get_name(status)); |
|
aff9c0803189
[gaim-migrate @ 12349]
Mark Doliner <markdoliner@pidgin.im>
parents:
10740
diff
changeset
|
6696 | |
|
10498
aff389ee45f3
[gaim-migrate @ 11790]
Mark Doliner <markdoliner@pidgin.im>
parents:
10487
diff
changeset
|
6697 | if (!gaim_status_is_active(status)) |
| 10485 | 6698 | return; |
| 6699 | ||
|
11718
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11670
diff
changeset
|
6700 | if (!gaim_account_is_connected(account)) |
|
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11670
diff
changeset
|
6701 | return; |
|
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11670
diff
changeset
|
6702 | |
|
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11670
diff
changeset
|
6703 | if (aim_sn_is_icq(gaim_account_get_username(account))) |
|
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11670
diff
changeset
|
6704 | oscar_set_status_icq(account, status); |
|
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11670
diff
changeset
|
6705 | else |
|
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11670
diff
changeset
|
6706 | /* QQQ - Should probably also set this for ICQ */ |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6707 | oscar_set_info_and_status(account, FALSE, NULL, TRUE, status); |
| 2086 | 6708 | } |
| 6709 | ||
|
11285
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
6710 | #ifdef CRAZY_WARN |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6711 | static void |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6712 | oscar_warn(GaimConnection *gc, const char *name, gboolean anonymous) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6713 | OscarData *od = (OscarData *)gc->proto_data; |
|
9753
5951fd24250e
[gaim-migrate @ 10620]
Mark Doliner <markdoliner@pidgin.im>
parents:
9730
diff
changeset
|
6714 | aim_im_warn(od->sess, od->conn, name, anonymous ? AIM_WARN_ANON : 0); |
| 2086 | 6715 | } |
|
11285
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
6716 | #endif |
| 2086 | 6717 | |
|
10747
aff9c0803189
[gaim-migrate @ 12349]
Mark Doliner <markdoliner@pidgin.im>
parents:
10740
diff
changeset
|
6718 | static void |
|
aff9c0803189
[gaim-migrate @ 12349]
Mark Doliner <markdoliner@pidgin.im>
parents:
10740
diff
changeset
|
6719 | oscar_add_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6720 | OscarData *od = (OscarData *)gc->proto_data; |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6721 | |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6722 | if (!aim_snvalid(buddy->name)) { |
|
8092
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
6723 | gchar *buf; |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
6724 | buf = g_strdup_printf(_("Could not add the buddy %s because the screen name is invalid. Screen names must either start with a letter and contain only letters, numbers and spaces, or contain only numbers."), buddy->name); |
| 9627 | 6725 | if (!gaim_conv_present_error(buddy->name, gaim_connection_get_account(gc), buf)) |
| 6726 | gaim_notify_error(gc, NULL, _("Unable To Add"), buf); | |
|
8092
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
6727 | g_free(buf); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6728 | |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6729 | /* Remove from local list */ |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6730 | gaim_blist_remove_buddy(buddy); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6731 | |
|
8092
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
6732 | return; |
|
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
6733 | } |
|
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
6734 | |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6735 | if ((od->sess->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))) { |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6736 | if (buddy && group) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6737 | gaim_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6738 | "ssi: adding buddy %s to group %s\n", buddy->name, group->name); |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
6739 | aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_buddy_get_alias_only(buddy), NULL, NULL, 0); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6740 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6741 | } |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6742 | |
|
10157
650fd69090cd
[gaim-migrate @ 11237]
Mark Doliner <markdoliner@pidgin.im>
parents:
10152
diff
changeset
|
6743 | /* XXX - Should this be done from AIM accounts, as well? */ |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
6744 | if (od->icq) |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6745 | aim_icq_getalias(od->sess, buddy->name); |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6746 | } |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6747 | |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6748 | static void oscar_remove_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6749 | OscarData *od = (OscarData *)gc->proto_data; |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6750 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6751 | if (od->sess->ssi.received_data) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6752 | gaim_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6753 | "ssi: deleting buddy %s from group %s\n", buddy->name, group->name); |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6754 | aim_ssi_delbuddy(od->sess, buddy->name, group->name); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6755 | } |
|
10866
40eab743e22b
[gaim-migrate @ 12552]
Mark Doliner <markdoliner@pidgin.im>
parents:
10860
diff
changeset
|
6756 | } |
|
40eab743e22b
[gaim-migrate @ 12552]
Mark Doliner <markdoliner@pidgin.im>
parents:
10860
diff
changeset
|
6757 | |
| 5575 | 6758 | static void oscar_move_buddy(GaimConnection *gc, const char *name, const char *old_group, const char *new_group) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6759 | OscarData *od = (OscarData *)gc->proto_data; |
|
4303
121490448a58
[gaim-migrate @ 4557]
Mark Doliner <markdoliner@pidgin.im>
parents:
4299
diff
changeset
|
6760 | if (od->sess->ssi.received_data && strcmp(old_group, new_group)) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6761 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6762 | "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
|
6763 | aim_ssi_movebuddy(od->sess, old_group, new_group, name); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6764 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6765 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6766 | |
| 5575 | 6767 | static void oscar_alias_buddy(GaimConnection *gc, const char *name, const char *alias) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6768 | OscarData *od = (OscarData *)gc->proto_data; |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6769 | if (od->sess->ssi.received_data) { |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6770 | char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, name); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6771 | if (gname) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6772 | gaim_debug_info("oscar", |
|
9586
cb4e6ae1f4b1
[gaim-migrate @ 10429]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9554
diff
changeset
|
6773 | "ssi: changing the alias for buddy %s to %s\n", name, alias ? alias : "(none)"); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
6774 | aim_ssi_aliasbuddy(od->sess, gname, name, alias); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6775 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6776 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6777 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6778 | |
|
11005
06c22b605323
[gaim-migrate @ 12864]
Mark Doliner <markdoliner@pidgin.im>
parents:
11002
diff
changeset
|
6779 | /* |
|
06c22b605323
[gaim-migrate @ 12864]
Mark Doliner <markdoliner@pidgin.im>
parents:
11002
diff
changeset
|
6780 | * FYI, the OSCAR SSI code removes empty groups automatically. |
|
06c22b605323
[gaim-migrate @ 12864]
Mark Doliner <markdoliner@pidgin.im>
parents:
11002
diff
changeset
|
6781 | */ |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6782 | static void oscar_rename_group(GaimConnection *gc, const char *old_name, GaimGroup *group, GList *moved_buddies) { |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
6783 | OscarData *od = (OscarData *)gc->proto_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6784 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6785 | if (od->sess->ssi.received_data) { |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6786 | if (aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, NULL, AIM_SSI_TYPE_GROUP)) { |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6787 | GList *cur, *groups = NULL; |
|
11643
f04408721780
[gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
11623
diff
changeset
|
6788 | GaimAccount *account = gaim_connection_get_account(gc); |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6789 | |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6790 | /* Make a list of what the groups each buddy is in */ |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6791 | for (cur = moved_buddies; cur != NULL; cur = cur->next) { |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6792 | GaimBlistNode *node = cur->data; |
|
11002
0be28aa755ab
[gaim-migrate @ 12857]
Daniel Atallah <datallah@pidgin.im>
parents:
10949
diff
changeset
|
6793 | /* node is GaimBuddy, parent is a GaimContact. |
|
0be28aa755ab
[gaim-migrate @ 12857]
Daniel Atallah <datallah@pidgin.im>
parents:
10949
diff
changeset
|
6794 | * We must go two levels up to get the Group */ |
|
0be28aa755ab
[gaim-migrate @ 12857]
Daniel Atallah <datallah@pidgin.im>
parents:
10949
diff
changeset
|
6795 | groups = g_list_append(groups, |
|
0be28aa755ab
[gaim-migrate @ 12857]
Daniel Atallah <datallah@pidgin.im>
parents:
10949
diff
changeset
|
6796 | node->parent->parent); |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6797 | } |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6798 | |
|
11643
f04408721780
[gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
11623
diff
changeset
|
6799 | gaim_account_remove_buddies(account, moved_buddies, groups); |
|
f04408721780
[gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
11623
diff
changeset
|
6800 | gaim_account_add_buddies(account, moved_buddies); |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6801 | g_list_free(groups); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6802 | gaim_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6803 | "ssi: moved all buddies from group %s to %s\n", old_name, group->name); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6804 | } else { |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6805 | aim_ssi_rename_group(od->sess, old_name, group->name); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6806 | gaim_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6807 | "ssi: renamed group %s to %s\n", old_name, group->name); |
|
2995
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
6808 | } |
|
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
6809 | } |
|
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
6810 | } |
|
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
6811 | |
|
5968
f3e4bc7bd718
[gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents:
5954
diff
changeset
|
6812 | static gboolean gaim_ssi_rerequestdata(gpointer data) { |
|
f3e4bc7bd718
[gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents:
5954
diff
changeset
|
6813 | aim_session_t *sess = data; |
| 6350 | 6814 | aim_ssi_reqdata(sess); |
|
5968
f3e4bc7bd718
[gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents:
5954
diff
changeset
|
6815 | return FALSE; |
|
f3e4bc7bd718
[gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents:
5954
diff
changeset
|
6816 | } |
|
f3e4bc7bd718
[gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents:
5954
diff
changeset
|
6817 | |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6818 | static int gaim_ssi_parseerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 6819 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6820 | OscarData *od = gc->proto_data; |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6821 | va_list ap; |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6822 | fu16_t reason; |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6823 | |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6824 | va_start(ap, fr); |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6825 | reason = (fu16_t)va_arg(ap, unsigned int); |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6826 | va_end(ap); |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6827 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6828 | gaim_debug_error("oscar", "ssi: SNAC error %hu\n", reason); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6829 | |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6830 | if (reason == 0x0005) { |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6831 | gaim_notify_error(gc, NULL, _("Unable To Retrieve Buddy List"), |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
6832 | _("Gaim was temporarily unable to retrieve your buddy list from the AIM servers. Your buddy list is not lost, and will probably become available in a few hours.")); |
| 8273 | 6833 | od->getblisttimer = gaim_timeout_add(300000, gaim_ssi_rerequestdata, od->sess); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6834 | } |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6835 | |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6836 | oscar_set_extendedstatus(gc); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6837 | |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6838 | /* Activate SSI */ |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6839 | /* 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
|
6840 | /* Make sure your privacy setting/invisibility is set how you want it before this! */ |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6841 | gaim_debug_info("oscar", "ssi: activating server-stored buddy list\n"); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6842 | aim_ssi_enable(od->sess); |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6843 | |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6844 | return 1; |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6845 | } |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6846 | |
| 2991 | 6847 | static int gaim_ssi_parserights(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 6848 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6849 | OscarData *od = (OscarData *)gc->proto_data; |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
6850 | int i; |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
6851 | va_list ap; |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
6852 | int numtypes; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6853 | fu16_t *maxitems; |
| 2991 | 6854 | |
| 6855 | va_start(ap, fr); | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6856 | numtypes = va_arg(ap, int); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6857 | maxitems = va_arg(ap, fu16_t *); |
| 2991 | 6858 | va_end(ap); |
| 6859 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6860 | gaim_debug_misc("oscar", "ssi rights:"); |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5208
diff
changeset
|
6861 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6862 | for (i=0; i<numtypes; i++) |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6863 | gaim_debug_misc(NULL, " max type 0x%04x=%hd,", |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5208
diff
changeset
|
6864 | i, maxitems[i]); |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5208
diff
changeset
|
6865 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6866 | gaim_debug_misc(NULL, "\n"); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6867 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6868 | if (numtypes >= 0) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6869 | od->rights.maxbuddies = maxitems[0]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6870 | if (numtypes >= 1) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6871 | od->rights.maxgroups = maxitems[1]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6872 | if (numtypes >= 2) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6873 | od->rights.maxpermits = maxitems[2]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6874 | if (numtypes >= 3) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6875 | od->rights.maxdenies = maxitems[3]; |
| 2991 | 6876 | |
| 6877 | return 1; | |
| 6878 | } | |
| 6879 | ||
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6880 | static int gaim_ssi_parselist(aim_session_t *sess, aim_frame_t *fr, ...) |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6881 | { |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6882 | GaimConnection *gc; |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6883 | OscarData *od; |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6884 | GaimAccount *account; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6885 | GaimGroup *g; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6886 | GaimBuddy *b; |
|
2995
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
6887 | struct aim_ssi_item *curitem; |
|
12317
3a2f08276e58
[gaim-migrate @ 14621]
Richard Laager <rlaager@pidgin.im>
parents:
12271
diff
changeset
|
6888 | fu32_t tmp; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6889 | va_list ap; |
| 8219 | 6890 | fu16_t fmtver, numitems; |
| 6891 | struct aim_ssi_item *items; | |
| 6892 | fu32_t timestamp; | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6893 | |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6894 | gc = sess->aux_data; |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6895 | od = gc->proto_data; |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6896 | account = gaim_connection_get_account(gc); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6897 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6898 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6899 | fmtver = (fu16_t)va_arg(ap, int); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6900 | numitems = (fu16_t)va_arg(ap, int); |
| 8219 | 6901 | items = va_arg(ap, struct aim_ssi_item *); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6902 | timestamp = va_arg(ap, fu32_t); |
| 8219 | 6903 | va_end(ap); |
| 2991 | 6904 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6905 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6906 | "ssi: syncing local list and server list\n"); |
| 2991 | 6907 | |
| 8219 | 6908 | if ((timestamp == 0) || (numitems == 0)) { |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
6909 | gaim_debug_info("oscar", "Got AIM SSI with a 0 timestamp or 0 numitems--not syncing. This probably means your buddy list is empty.", NULL); |
| 8219 | 6910 | return 1; |
| 6911 | } | |
| 6912 | ||
| 2991 | 6913 | /* Clean the buddy list */ |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
6914 | aim_ssi_cleanlist(sess); |
| 2991 | 6915 | |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6916 | { /* If not in server list then prune from local list */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6917 | GaimBlistNode *gnode, *cnode, *bnode; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6918 | GaimBuddyList *blist; |
|
9539
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6919 | GSList *cur, *next; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6920 | |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6921 | /* Buddies */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6922 | cur = NULL; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6923 | if ((blist = gaim_get_blist()) != NULL) { |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6924 | for (gnode = blist->root; gnode; gnode = gnode->next) { |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6925 | if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6926 | continue; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6927 | g = (GaimGroup *)gnode; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6928 | for (cnode = gnode->child; cnode; cnode = cnode->next) { |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6929 | if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6930 | continue; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6931 | for (bnode = cnode->child; bnode; bnode = bnode->next) { |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6932 | if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6933 | continue; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6934 | b = (GaimBuddy *)bnode; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6935 | if (b->account == gc->account) { |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6936 | if (aim_ssi_itemlist_exists(sess->ssi.local, b->name)) { |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6937 | /* If the buddy is an ICQ user then load his nickname */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6938 | const char *servernick = gaim_blist_node_get_string((GaimBlistNode*)b, "servernick"); |
| 8214 | 6939 | char *alias; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6940 | if (servernick) |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6941 | serv_got_alias(gc, b->name, servernick); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6942 | |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6943 | /* Store local alias on server */ |
| 8214 | 6944 | alias = aim_ssi_getalias(sess->ssi.local, g->name, b->name); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6945 | if (!alias && b->alias && strlen(b->alias)) |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6946 | aim_ssi_aliasbuddy(sess, g->name, b->name, b->alias); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6947 | free(alias); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6948 | } else { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6949 | gaim_debug_info("oscar", |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6950 | "ssi: removing buddy %s from local list\n", b->name); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6951 | /* We can't actually remove now because it will screw up our looping */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6952 | cur = g_slist_prepend(cur, b); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6953 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6954 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6955 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6956 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6957 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6958 | } |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6959 | |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6960 | while (cur != NULL) { |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6961 | b = cur->data; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6962 | cur = g_slist_remove(cur, b); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6963 | gaim_blist_remove_buddy(b); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6964 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6965 | |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6966 | /* Permit list */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6967 | if (gc->account->permit) { |
|
9539
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6968 | next = gc->account->permit; |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6969 | while (next != NULL) { |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6970 | cur = next; |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6971 | next = next->next; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6972 | if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_PERMIT)) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6973 | gaim_debug_info("oscar", |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6974 | "ssi: removing permit %s from local list\n", (const char *)cur->data); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6975 | gaim_privacy_permit_remove(account, cur->data, TRUE); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6976 | } |
|
9539
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6977 | } |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6978 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6979 | |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6980 | /* Deny list */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6981 | if (gc->account->deny) { |
|
9539
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6982 | next = gc->account->deny; |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6983 | while (next != NULL) { |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6984 | cur = next; |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6985 | next = next->next; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6986 | if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_DENY)) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6987 | gaim_debug_info("oscar", |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6988 | "ssi: removing deny %s from local list\n", (const char *)cur->data); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6989 | gaim_privacy_deny_remove(account, cur->data, TRUE); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6990 | } |
|
9539
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6991 | } |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6992 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6993 | /* Presence settings (idle time visibility) */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6994 | if ((tmp = aim_ssi_getpresence(sess->ssi.local)) != 0xFFFFFFFF) |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6995 | if (!(tmp & 0x400)) |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6996 | aim_ssi_setpresence(sess, tmp | 0x400); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6997 | } /* end pruning buddies from local list */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6998 | |
| 2991 | 6999 | /* Add from server list to local list */ |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7000 | for (curitem=sess->ssi.local; curitem; curitem=curitem->next) { |
|
7328
978db7a49075
[gaim-migrate @ 7914]
Mark Doliner <markdoliner@pidgin.im>
parents:
7313
diff
changeset
|
7001 | if ((curitem->name == NULL) || (g_utf8_validate(curitem->name, -1, NULL))) |
| 2991 | 7002 | switch (curitem->type) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7003 | case 0x0000: { /* Buddy */ |
|
4251
7d62db57d86a
[gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents:
4249
diff
changeset
|
7004 | if (curitem->name) { |
|
4292
249d89e1b14c
[gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents:
4282
diff
changeset
|
7005 | char *gname = aim_ssi_itemlist_findparentname(sess->ssi.local, curitem->name); |
|
7166
70825074f830
[gaim-migrate @ 7733]
Mark Doliner <markdoliner@pidgin.im>
parents:
7164
diff
changeset
|
7006 | char *gname_utf8 = gname ? gaim_utf8_try_convert(gname) : NULL; |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
7007 | char *alias = aim_ssi_getalias(sess->ssi.local, gname, curitem->name); |
|
7166
70825074f830
[gaim-migrate @ 7733]
Mark Doliner <markdoliner@pidgin.im>
parents:
7164
diff
changeset
|
7008 | char *alias_utf8 = alias ? gaim_utf8_try_convert(alias) : NULL; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
7009 | b = gaim_find_buddy(gc->account, curitem->name); |
| 4458 | 7010 | /* Should gname be freed here? -- elb */ |
|
4754
216cd548ad68
[gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents:
4744
diff
changeset
|
7011 | /* Not with the current code, but that might be cleaner -- med */ |
| 4458 | 7012 | free(alias); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
7013 | if (b) { |
|
4292
249d89e1b14c
[gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents:
4282
diff
changeset
|
7014 | /* Get server stored alias */ |
| 4705 | 7015 | if (alias_utf8) { |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
7016 | g_free(b->alias); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
7017 | b->alias = g_strdup(alias_utf8); |
| 4705 | 7018 | } |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
7019 | } else { |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
7020 | b = gaim_buddy_new(gc->account, curitem->name, alias_utf8); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
7021 | |
|
4754
216cd548ad68
[gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents:
4744
diff
changeset
|
7022 | if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) { |
| 4687 | 7023 | g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans")); |
|
4754
216cd548ad68
[gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents:
4744
diff
changeset
|
7024 | gaim_blist_add_group(g, NULL); |
|
216cd548ad68
[gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents:
4744
diff
changeset
|
7025 | } |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
7026 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7027 | gaim_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
7028 | "ssi: adding buddy %s to group %s to local list\n", curitem->name, gname_utf8 ? gname_utf8 : _("Orphans")); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
7029 | gaim_blist_add_buddy(b, NULL, g, NULL); |
|
4251
7d62db57d86a
[gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents:
4249
diff
changeset
|
7030 | } |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
7031 | if (!aim_sncmp(curitem->name, account->username)) { |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
7032 | char *comment = aim_ssi_getcomment(sess->ssi.local, gname, curitem->name); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
7033 | gaim_check_comment(od, comment); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
7034 | free(comment); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
7035 | } |
| 7162 | 7036 | g_free(gname_utf8); |
| 7037 | g_free(alias_utf8); | |
| 2991 | 7038 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7039 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7040 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7041 | case 0x0001: { /* Group */ |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
7042 | /* Shouldn't add empty groups */ |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7043 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7044 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7045 | case 0x0002: { /* Permit buddy */ |
| 2991 | 7046 | if (curitem->name) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7047 | /* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */ |
| 2991 | 7048 | GSList *list; |
| 5575 | 7049 | for (list=account->permit; (list && aim_sncmp(curitem->name, list->data)); list=list->next); |
| 2991 | 7050 | if (!list) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7051 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
7052 | "ssi: adding permit buddy %s to local list\n", curitem->name); |
|
6400
fc73d6446a5b
[gaim-migrate @ 6905]
Christian Hammond <chipx86@chipx86.com>
parents:
6378
diff
changeset
|
7053 | gaim_privacy_permit_add(account, curitem->name, TRUE); |
| 2991 | 7054 | } |
| 7055 | } | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7056 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7057 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7058 | case 0x0003: { /* Deny buddy */ |
| 2991 | 7059 | if (curitem->name) { |
| 7060 | GSList *list; | |
| 5575 | 7061 | for (list=account->deny; (list && aim_sncmp(curitem->name, list->data)); list=list->next); |
| 2991 | 7062 | if (!list) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7063 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
7064 | "ssi: adding deny buddy %s to local list\n", curitem->name); |
|
6400
fc73d6446a5b
[gaim-migrate @ 6905]
Christian Hammond <chipx86@chipx86.com>
parents:
6378
diff
changeset
|
7065 | gaim_privacy_deny_add(account, curitem->name, TRUE); |
| 2991 | 7066 | } |
| 7067 | } | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7068 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7069 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7070 | case 0x0004: { /* Permit/deny setting */ |
| 2991 | 7071 | if (curitem->data) { |
| 7072 | fu8_t permdeny; | |
| 5575 | 7073 | if ((permdeny = aim_ssi_getpermdeny(sess->ssi.local)) && (permdeny != account->perm_deny)) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7074 | gaim_debug_info("oscar", |
| 5575 | 7075 | "ssi: changing permdeny from %d to %hhu\n", account->perm_deny, permdeny); |
| 7076 | account->perm_deny = permdeny; | |
|
11766
1a2e988316e9
[gaim-migrate @ 14057]
Mark Doliner <markdoliner@pidgin.im>
parents:
11718
diff
changeset
|
7077 | if (od->icq && account->perm_deny == GAIM_PRIVACY_ALLOW_USERS) { |
|
1a2e988316e9
[gaim-migrate @ 14057]
Mark Doliner <markdoliner@pidgin.im>
parents:
11718
diff
changeset
|
7078 | gaim_presence_set_status_active(account->presence, OSCAR_STATUS_ID_INVISIBLE, TRUE); |
| 4342 | 7079 | } |
| 2991 | 7080 | } |
| 7081 | } | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7082 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7083 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7084 | case 0x0005: { /* Presence setting */ |
|
3109
c193eb9c1c30
[gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents:
3106
diff
changeset
|
7085 | /* 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
|
7086 | } break; |
| 2991 | 7087 | } /* End of switch on curitem->type */ |
| 7088 | } /* End of for loop */ | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7089 | |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
7090 | oscar_set_extendedstatus(gc); |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
7091 | |
| 4342 | 7092 | /* Activate SSI */ |
| 7093 | /* Sending the enable causes other people to be able to see you, and you to see them */ | |
| 7094 | /* Make sure your privacy setting/invisibility is set how you want it before this! */ | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7095 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
7096 | "ssi: activating server-stored buddy list\n"); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
7097 | aim_ssi_enable(sess); |
| 4342 | 7098 | |
| 2991 | 7099 | return 1; |
| 2086 | 7100 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7101 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7102 | static int gaim_ssi_parseack(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 7103 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7104 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7105 | struct aim_ssi_tmp *retval; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7106 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7107 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7108 | retval = va_arg(ap, struct aim_ssi_tmp *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7109 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7110 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7111 | while (retval) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7112 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
7113 | "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
|
7114 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7115 | if (retval->ack != 0xffff) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7116 | switch (retval->ack) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7117 | case 0x0000: { /* added successfully */ |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7118 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7119 | |
|
4829
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
7120 | 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
|
7121 | gchar *buf; |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
7122 | buf = g_strdup_printf(_("Could not add the buddy %s because you have too many buddies in your buddy list. Please remove one and try again."), (retval->name ? retval->name : _("(no name)"))); |
|
9758
bad4efbbfbf5
[gaim-migrate @ 10625]
Mark Doliner <markdoliner@pidgin.im>
parents:
9754
diff
changeset
|
7123 | if ((retval->name != NULL) && !gaim_conv_present_error(retval->name, gaim_connection_get_account(gc), buf)) |
| 9627 | 7124 | gaim_notify_error(gc, NULL, _("Unable To Add"), buf); |
|
4829
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
7125 | g_free(buf); |
|
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
7126 | } |
|
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
7127 | |
| 7023 | 7128 | case 0x000e: { /* buddy requires authorization */ |
|
4828
a7a331159e7d
[gaim-migrate @ 5153]
Mark Doliner <markdoliner@pidgin.im>
parents:
4827
diff
changeset
|
7129 | if ((retval->action == AIM_CB_SSI_ADD) && (retval->name)) |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
7130 | gaim_auth_sendrequest(gc, retval->name); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7131 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7132 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7133 | default: { /* La la la */ |
|
5197
ab4d919050d7
[gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents:
5167
diff
changeset
|
7134 | gchar *buf; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7135 | gaim_debug_error("oscar", "ssi: Action 0x%04hx was unsuccessful with error 0x%04hx\n", retval->action, retval->ack); |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
7136 | buf = g_strdup_printf(_("Could not add the buddy %s for an unknown reason. The most common reason for this is that you have the maximum number of allowed buddies in your buddy list."), (retval->name ? retval->name : _("(no name)"))); |
|
9758
bad4efbbfbf5
[gaim-migrate @ 10625]
Mark Doliner <markdoliner@pidgin.im>
parents:
9754
diff
changeset
|
7137 | if ((retval->name != NULL) && !gaim_conv_present_error(retval->name, gaim_connection_get_account(gc), buf)) |
| 9627 | 7138 | gaim_notify_error(gc, NULL, _("Unable To Add"), buf); |
|
5197
ab4d919050d7
[gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents:
5167
diff
changeset
|
7139 | g_free(buf); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7140 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7141 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7142 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7143 | retval = retval->next; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7144 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7145 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7146 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7147 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7148 | |
|
8227
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7149 | static int gaim_ssi_parseadd(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7150 | GaimConnection *gc = sess->aux_data; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7151 | char *gname, *gname_utf8, *alias, *alias_utf8; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7152 | GaimBuddy *b; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7153 | GaimGroup *g; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7154 | va_list ap; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7155 | fu16_t type; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7156 | const char *name; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7157 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7158 | va_start(ap, fr); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7159 | type = (fu16_t)va_arg(ap, int); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7160 | name = va_arg(ap, char *); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7161 | va_end(ap); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7162 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7163 | if ((type != 0x0000) || (name == NULL)) |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7164 | return 1; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7165 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7166 | gname = aim_ssi_itemlist_findparentname(sess->ssi.local, name); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7167 | gname_utf8 = gname ? gaim_utf8_try_convert(gname) : NULL; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7168 | alias = aim_ssi_getalias(sess->ssi.local, gname, name); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7169 | alias_utf8 = alias ? gaim_utf8_try_convert(alias) : NULL; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7170 | b = gaim_find_buddy(gc->account, name); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7171 | free(alias); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7172 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7173 | if (b) { |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7174 | /* Get server stored alias */ |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7175 | if (alias_utf8) { |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7176 | g_free(b->alias); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7177 | b->alias = g_strdup(alias_utf8); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7178 | } |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7179 | } else { |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7180 | b = gaim_buddy_new(gc->account, name, alias_utf8); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7181 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7182 | if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) { |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7183 | g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans")); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7184 | gaim_blist_add_group(g, NULL); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7185 | } |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7186 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7187 | gaim_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
7188 | "ssi: adding buddy %s to group %s to local list\n", name, gname_utf8 ? gname_utf8 : _("Orphans")); |
|
8227
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7189 | gaim_blist_add_buddy(b, NULL, g, NULL); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7190 | } |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7191 | g_free(gname_utf8); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7192 | g_free(alias_utf8); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7193 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7194 | return 1; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7195 | } |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
7196 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7197 | static int gaim_ssi_authgiven(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 7198 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7199 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7200 | char *sn, *msg; |
| 4236 | 7201 | gchar *dialog_msg, *nombre; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7202 | struct name_data *data; |
| 6695 | 7203 | GaimBuddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7204 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7205 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7206 | sn = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7207 | msg = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7208 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7209 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7210 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
7211 | "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
|
7212 | |
| 4687 | 7213 | buddy = gaim_find_buddy(gc->account, sn); |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
7214 | if (buddy && (gaim_buddy_get_alias_only(buddy))) |
|
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
7215 | nombre = g_strdup_printf("%s (%s)", sn, gaim_buddy_get_alias_only(buddy)); |
| 4236 | 7216 | else |
| 7217 | nombre = g_strdup(sn); | |
| 7218 | ||
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
7219 | 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
|
7220 | data = g_new(struct name_data, 1); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7221 | data->gc = gc; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7222 | data->name = g_strdup(sn); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7223 | data->nick = NULL; |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
7224 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
7225 | gaim_request_yes_no(gc, NULL, _("Authorization Given"), dialog_msg, |
|
10116
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10111
diff
changeset
|
7226 | GAIM_DEFAULT_ACTION_NONE, data, |
| 7023 | 7227 | G_CALLBACK(gaim_icq_buddyadd), |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
7228 | G_CALLBACK(oscar_free_name_data)); |
| 4236 | 7229 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7230 | g_free(dialog_msg); |
| 4236 | 7231 | g_free(nombre); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7232 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7233 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7234 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7235 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7236 | static int gaim_ssi_authrequest(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 7237 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7238 | va_list ap; |
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
7239 | char *sn; |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
7240 | char *msg; |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
7241 | GaimAccount *account = gaim_connection_get_account(gc); |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
7242 | gchar *nombre; |
|
11567
14ffd9c34829
[gaim-migrate @ 13834]
Daniel Atallah <datallah@pidgin.im>
parents:
11537
diff
changeset
|
7243 | gchar *reason = NULL; |
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
7244 | gchar *dialog_msg; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7245 | struct name_data *data; |
| 6695 | 7246 | GaimBuddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7247 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7248 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7249 | sn = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7250 | msg = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7251 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7252 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7253 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
7254 | "ssi: received authorization request from %s\n", sn); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7255 | |
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
7256 | buddy = gaim_find_buddy(account, sn); |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
7257 | if (buddy && (gaim_buddy_get_alias_only(buddy))) |
|
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
7258 | nombre = g_strdup_printf("%s (%s)", sn, gaim_buddy_get_alias_only(buddy)); |
| 4236 | 7259 | else |
| 7260 | nombre = g_strdup(sn); | |
| 7261 | ||
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
7262 | if (msg != NULL) |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
7263 | reason = gaim_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg, strlen(msg)); |
|
11567
14ffd9c34829
[gaim-migrate @ 13834]
Daniel Atallah <datallah@pidgin.im>
parents:
11537
diff
changeset
|
7264 | |
|
14ffd9c34829
[gaim-migrate @ 13834]
Daniel Atallah <datallah@pidgin.im>
parents:
11537
diff
changeset
|
7265 | if (reason == NULL) |
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
7266 | reason = g_strdup(_("No reason given.")); |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
7267 | |
|
10949
b2949f5fc512
[gaim-migrate @ 12749]
Evan Schoenberg <evands@pidgin.im>
parents:
10866
diff
changeset
|
7268 | dialog_msg = g_strdup_printf( |
|
b2949f5fc512
[gaim-migrate @ 12749]
Evan Schoenberg <evands@pidgin.im>
parents:
10866
diff
changeset
|
7269 | _("The user %s wants to add %s to their buddy list for the following reason:\n%s"), |
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
7270 | nombre, gaim_account_get_username(account), reason); |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
7271 | g_free(reason); |
|
10949
b2949f5fc512
[gaim-migrate @ 12749]
Evan Schoenberg <evands@pidgin.im>
parents:
10866
diff
changeset
|
7272 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7273 | data = g_new(struct name_data, 1); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7274 | data->gc = gc; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7275 | data->name = g_strdup(sn); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7276 | data->nick = NULL; |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
7277 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
7278 | gaim_request_action(gc, NULL, _("Authorization Request"), dialog_msg, |
|
9972
f39adb92a177
[gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents:
9971
diff
changeset
|
7279 | GAIM_DEFAULT_ACTION_NONE, data, 2, |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
7280 | _("Authorize"), G_CALLBACK(gaim_auth_grant), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
7281 | _("Deny"), G_CALLBACK(gaim_auth_dontgrant_msgprompt)); |
| 4236 | 7282 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7283 | g_free(dialog_msg); |
| 4236 | 7284 | g_free(nombre); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7285 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7286 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7287 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7288 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7289 | static int gaim_ssi_authreply(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 7290 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7291 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7292 | char *sn, *msg; |
| 4236 | 7293 | gchar *dialog_msg, *nombre; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7294 | fu8_t reply; |
| 6695 | 7295 | GaimBuddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7296 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7297 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7298 | sn = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7299 | reply = (fu8_t)va_arg(ap, int); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7300 | msg = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7301 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7302 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7303 | gaim_debug_info("oscar", |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
7304 | "ssi: received authorization reply from %s. Reply is 0x%04hhx\n", sn, reply); |
| 4236 | 7305 | |
| 4687 | 7306 | buddy = gaim_find_buddy(gc->account, sn); |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
7307 | if (buddy && (gaim_buddy_get_alias_only(buddy))) |
|
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
7308 | nombre = g_strdup_printf("%s (%s)", sn, gaim_buddy_get_alias_only(buddy)); |
| 4236 | 7309 | else |
| 7310 | nombre = g_strdup(sn); | |
| 7311 | ||
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7312 | if (reply) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7313 | /* Granted */ |
| 7023 | 7314 | dialog_msg = g_strdup_printf(_("The user %s has granted your request to add them to your buddy list."), nombre); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
7315 | gaim_notify_info(gc, NULL, _("Authorization Granted"), dialog_msg); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7316 | } else { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7317 | /* Denied */ |
| 7023 | 7318 | dialog_msg = g_strdup_printf(_("The user %s has denied your request to add them to your buddy list for the following reason:\n%s"), nombre, msg ? msg : _("No reason given.")); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
7319 | gaim_notify_info(gc, NULL, _("Authorization Denied"), dialog_msg); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7320 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7321 | g_free(dialog_msg); |
| 4236 | 7322 | g_free(nombre); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7323 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7324 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7325 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7326 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7327 | static int gaim_ssi_gotadded(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 7328 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7329 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7330 | char *sn; |
| 6695 | 7331 | GaimBuddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7332 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7333 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7334 | sn = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7335 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7336 | |
| 4687 | 7337 | buddy = gaim_find_buddy(gc->account, sn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7338 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
7339 | "ssi: %s added you to their buddy list\n", sn); |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
7340 | gaim_account_notify_added(gc->account, NULL, sn, (buddy ? gaim_buddy_get_alias_only(buddy) : NULL), NULL); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7341 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7342 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
7343 | } |
| 2086 | 7344 | |
| 5575 | 7345 | static GList *oscar_chat_info(GaimConnection *gc) { |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7346 | GList *m = NULL; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7347 | struct proto_chat_entry *pce; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7348 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7349 | pce = g_new0(struct proto_chat_entry, 1); |
|
9770
d61fe8dcb6d9
[gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9758
diff
changeset
|
7350 | pce->label = _("_Room:"); |
| 5234 | 7351 | pce->identifier = "room"; |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10472
diff
changeset
|
7352 | pce->required = TRUE; |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7353 | m = g_list_append(m, pce); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7354 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7355 | pce = g_new0(struct proto_chat_entry, 1); |
|
7841
0000a4c68bf8
[gaim-migrate @ 8494]
Mark Doliner <markdoliner@pidgin.im>
parents:
7805
diff
changeset
|
7356 | pce->label = _("_Exchange:"); |
| 5234 | 7357 | pce->identifier = "exchange"; |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10472
diff
changeset
|
7358 | pce->required = TRUE; |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7359 | pce->is_int = TRUE; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7360 | pce->min = 4; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7361 | pce->max = 20; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7362 | m = g_list_append(m, pce); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7363 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7364 | return m; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7365 | } |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7366 | |
|
12412
8abe3226695e
[gaim-migrate @ 14719]
Richard Laager <rlaager@pidgin.im>
parents:
12393
diff
changeset
|
7367 | static GHashTable *oscar_chat_info_defaults(GaimConnection *gc, const char *chat_name) |
|
9754
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
7368 | { |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
7369 | GHashTable *defaults; |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
7370 | |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
7371 | defaults = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free); |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
7372 | |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
7373 | if (chat_name != NULL) |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
7374 | g_hash_table_insert(defaults, "room", g_strdup(chat_name)); |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
7375 | |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
7376 | return defaults; |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
7377 | } |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
7378 | |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9914
diff
changeset
|
7379 | static char *oscar_get_chat_name(GHashTable *data) { |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9914
diff
changeset
|
7380 | return g_strdup(g_hash_table_lookup(data, "room")); |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9914
diff
changeset
|
7381 | } |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9914
diff
changeset
|
7382 | |
|
8308
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
7383 | static void oscar_join_chat(GaimConnection *gc, GHashTable *data) { |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
7384 | OscarData *od = (OscarData *)gc->proto_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
7385 | aim_conn_t *cur; |
| 5234 | 7386 | char *name, *exchange; |
| 7387 | ||
| 7388 | name = g_hash_table_lookup(data, "room"); | |
| 7389 | exchange = g_hash_table_lookup(data, "exchange"); | |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
7390 | |
|
8308
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
7391 | if ((name == NULL) || (*name == '\0')) { |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
7392 | gaim_notify_error(gc, NULL, _("Invalid chat name specified."), NULL); |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
7393 | return; |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
7394 | } |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
7395 | |
|
11461
47d4ad51ed18
[gaim-migrate @ 13701]
Daniel Atallah <datallah@pidgin.im>
parents:
11404
diff
changeset
|
7396 | gaim_debug_info("oscar", |
|
47d4ad51ed18
[gaim-migrate @ 13701]
Daniel Atallah <datallah@pidgin.im>
parents:
11404
diff
changeset
|
7397 | "Attempting to join chat room %s.\n", name); |
|
47d4ad51ed18
[gaim-migrate @ 13701]
Daniel Atallah <datallah@pidgin.im>
parents:
11404
diff
changeset
|
7398 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7399 | if ((cur = aim_getconn_type(od->sess, AIM_CONN_TYPE_CHATNAV))) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7400 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
7401 | "chatnav exists, creating room\n"); |
| 5234 | 7402 | aim_chatnav_createroom(od->sess, cur, name, atoi(exchange)); |
| 2086 | 7403 | } else { |
| 7404 | /* this gets tricky */ | |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
7405 | struct create_room *cr = g_new0(struct create_room, 1); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7406 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
7407 | "chatnav does not exist, opening chatnav\n"); |
| 5234 | 7408 | cr->exchange = atoi(exchange); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
7409 | cr->name = g_strdup(name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7410 | od->create_rooms = g_slist_append(od->create_rooms, cr); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7411 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_CHATNAV); |
| 2086 | 7412 | } |
| 7413 | } | |
| 7414 | ||
|
8308
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
7415 | static void oscar_chat_invite(GaimConnection *gc, int id, const char *message, const char *name) { |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
7416 | OscarData *od = (OscarData *)gc->proto_data; |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
7417 | struct chat_connection *ccon = find_oscar_chat(gc, id); |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10401
diff
changeset
|
7418 | |
|
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10401
diff
changeset
|
7419 | if (ccon == NULL) |
| 2086 | 7420 | return; |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10401
diff
changeset
|
7421 | |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
7422 | aim_im_sendch2_chatinvite(od->sess, name, message ? message : "", |
| 2086 | 7423 | ccon->exchange, ccon->name, 0x0); |
| 7424 | } | |
| 7425 | ||
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
7426 | static void |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
7427 | oscar_chat_leave(GaimConnection *gc, int id) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
7428 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
7429 | GaimConversation *conv; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
7430 | struct chat_connection *cc; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
7431 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
7432 | conv = gaim_find_chat(gc, id); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
7433 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
7434 | g_return_if_fail(conv != NULL); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
7435 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
7436 | gaim_debug_info("oscar", "Leaving chat room %s\n", conv->name); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
7437 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
7438 | cc = find_oscar_chat(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv))); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
7439 | oscar_chat_kill(gc, cc); |
| 2086 | 7440 | } |
| 7441 | ||
|
12216
d80739091a63
[gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12189
diff
changeset
|
7442 | static int oscar_send_chat(GaimConnection *gc, int id, const char *message, GaimMessageFlags flags) { |
| 8219 | 7443 | OscarData *od = (OscarData *)gc->proto_data; |
| 7444 | GaimConversation *conv = NULL; | |
| 2086 | 7445 | struct chat_connection *c = NULL; |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
7446 | char *buf, *buf2; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
7447 | fu16_t charset, charsubset; |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
7448 | char *charsetstr = NULL; |
| 10111 | 7449 | int len; |
| 8219 | 7450 | |
| 7451 | if (!(conv = gaim_find_chat(gc, id))) | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
7452 | return -EINVAL; |
| 2086 | 7453 | |
| 8219 | 7454 | if (!(c = find_oscar_chat_by_conv(gc, conv))) |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
7455 | return -EINVAL; |
| 2086 | 7456 | |
| 8219 | 7457 | buf = gaim_strdup_withhtml(message); |
| 7458 | len = strlen(buf); | |
| 7459 | ||
| 8962 | 7460 | if (strstr(buf, "<IMG ")) |
| 7461 | gaim_conversation_write(conv, "", | |
| 7462 | _("Your IM Image was not sent. " | |
| 7463 | "You cannot send IM Images in AIM chats."), | |
| 7464 | GAIM_MESSAGE_ERROR, time(NULL)); | |
| 7465 | ||
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
7466 | gaim_plugin_oscar_convert_to_best_encoding(gc, NULL, buf, &buf2, &len, &charset, &charsubset); |
|
8359
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8353
diff
changeset
|
7467 | if ((len > c->maxlen) || (len > c->maxvis)) { |
|
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8353
diff
changeset
|
7468 | g_free(buf2); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
7469 | return -E2BIG; |
|
8359
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8353
diff
changeset
|
7470 | } |
|
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8353
diff
changeset
|
7471 | |
|
9831
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
7472 | if (charset == AIM_CHARSET_ASCII) |
|
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
7473 | charsetstr = "us-ascii"; |
|
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
7474 | else if (charset == AIM_CHARSET_UNICODE) |
|
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
7475 | charsetstr = "unicode-2-0"; |
|
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
7476 | else if (charset == AIM_CHARSET_CUSTOM) |
|
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
7477 | charsetstr = "iso-8859-1"; |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
7478 | aim_chat_send_im(od->sess, c->conn, 0, buf2, len, charsetstr, "en"); |
| 8219 | 7479 | g_free(buf2); |
|
8359
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8353
diff
changeset
|
7480 | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
7481 | return 0; |
| 2086 | 7482 | } |
| 7483 | ||
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7484 | static const char *oscar_list_icon(GaimAccount *a, GaimBuddy *b) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7485 | { |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
7486 | if (!b || (b && b->name && b->name[0] == '+')) { |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
7487 | if (a != NULL && aim_sn_is_icq(gaim_account_get_username(a))) |
| 4687 | 7488 | return "icq"; |
| 7489 | else | |
| 7490 | return "aim"; | |
| 7491 | } | |
|
5646
0aa637549d87
[gaim-migrate @ 6060]
Christian Hammond <chipx86@chipx86.com>
parents:
5638
diff
changeset
|
7492 | |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
7493 | if (b != NULL && aim_sn_is_icq(b->name)) |
| 4687 | 7494 | return "icq"; |
| 7495 | return "aim"; | |
| 7496 | } | |
| 7497 | ||
|
9972
f39adb92a177
[gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents:
9971
diff
changeset
|
7498 | static void oscar_list_emblems(GaimBuddy *b, const char **se, const char **sw, const char **nw, const char **ne) |
| 4687 | 7499 | { |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
7500 | GaimConnection *gc = NULL; |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
7501 | OscarData *od = NULL; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7502 | GaimAccount *account = NULL; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7503 | GaimPresence *presence; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7504 | GaimStatus *status; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7505 | const char *status_id; |
| 4687 | 7506 | char *emblems[4] = {NULL,NULL,NULL,NULL}; |
| 7507 | int i = 0; | |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
7508 | aim_userinfo_t *userinfo = NULL; |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
7509 | |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
7510 | if (b != NULL) |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
7511 | account = b->account; |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
7512 | if (account != NULL) |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
7513 | gc = account->gc; |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
7514 | if (gc != NULL) |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
7515 | od = gc->proto_data; |
|
7945
7270cd25f841
[gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents:
7880
diff
changeset
|
7516 | if (od != NULL) |
|
7270cd25f841
[gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents:
7880
diff
changeset
|
7517 | userinfo = aim_locate_finduserinfo(od->sess, b->name); |
| 4687 | 7518 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7519 | presence = gaim_buddy_get_presence(b); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7520 | status = gaim_presence_get_active_status(presence); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7521 | status_id = gaim_status_get_id(status); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7522 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7523 | if (gaim_presence_is_online(presence) == FALSE) { |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7524 | char *gname; |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
7525 | if ((b->name) && (od) && (od->sess->ssi.received_data) && |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7526 | (gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name)) && |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7527 | (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))) { |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7528 | emblems[i++] = "notauthorized"; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7529 | } else { |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7530 | emblems[i++] = "offline"; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7531 | } |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7532 | } |
| 4916 | 7533 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7534 | if (b->name && aim_sn_is_icq(b->name)) { |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7535 | if (!strcmp(status_id, OSCAR_STATUS_ID_INVISIBLE)) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7536 | emblems[i++] = "invisible"; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7537 | else if (!strcmp(status_id, OSCAR_STATUS_ID_FREE4CHAT)) |
|
4960
65bf67b7600f
[gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents:
4959
diff
changeset
|
7538 | emblems[i++] = "freeforchat"; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7539 | else if (!strcmp(status_id, OSCAR_STATUS_ID_DND)) |
|
4960
65bf67b7600f
[gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents:
4959
diff
changeset
|
7540 | emblems[i++] = "dnd"; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7541 | else if (!strcmp(status_id, OSCAR_STATUS_ID_NA)) |
|
4960
65bf67b7600f
[gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents:
4959
diff
changeset
|
7542 | emblems[i++] = "na"; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7543 | else if (!strcmp(status_id, OSCAR_STATUS_ID_OCCUPIED)) |
|
4960
65bf67b7600f
[gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents:
4959
diff
changeset
|
7544 | emblems[i++] = "occupied"; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7545 | else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY)) |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
7546 | emblems[i++] = "away"; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7547 | } else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY)) { |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7548 | emblems[i++] = "away"; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7549 | } |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7550 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7551 | if (userinfo != NULL ) { |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7552 | /* if (userinfo->flags & AIM_FLAG_UNCONFIRMED) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7553 | emblems[i++] = "unconfirmed"; */ |
|
11873
943281cbde02
[gaim-migrate @ 14164]
Casey Harkins <charkins@pidgin.im>
parents:
11837
diff
changeset
|
7554 | if ((i < 4) && userinfo->flags & AIM_FLAG_ADMINISTRATOR) |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7555 | emblems[i++] = "admin"; |
|
11873
943281cbde02
[gaim-migrate @ 14164]
Casey Harkins <charkins@pidgin.im>
parents:
11837
diff
changeset
|
7556 | if ((i < 4) && userinfo->flags & AIM_FLAG_AOL) |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7557 | emblems[i++] = "aol"; |
|
11873
943281cbde02
[gaim-migrate @ 14164]
Casey Harkins <charkins@pidgin.im>
parents:
11837
diff
changeset
|
7558 | if ((i < 4) && userinfo->flags & AIM_FLAG_WIRELESS) |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7559 | emblems[i++] = "wireless"; |
|
11873
943281cbde02
[gaim-migrate @ 14164]
Casey Harkins <charkins@pidgin.im>
parents:
11837
diff
changeset
|
7560 | if ((i < 4) && userinfo->flags & AIM_FLAG_ACTIVEBUDDY) |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7561 | emblems[i++] = "activebuddy"; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7562 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7563 | if ((i < 4) && (userinfo->capabilities & AIM_CAPS_HIPTOP)) |
|
7945
7270cd25f841
[gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents:
7880
diff
changeset
|
7564 | emblems[i++] = "hiptop"; |
|
7270cd25f841
[gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents:
7880
diff
changeset
|
7565 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7566 | if ((i < 4) && (userinfo->capabilities & AIM_CAPS_SECUREIM)) |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
7567 | emblems[i++] = "secure"; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7568 | } |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
7569 | |
| 4687 | 7570 | *se = emblems[0]; |
| 7571 | *sw = emblems[1]; | |
| 7572 | *nw = emblems[2]; | |
| 7573 | *ne = emblems[3]; | |
| 7574 | } | |
| 7575 | ||
| 6695 | 7576 | static char *oscar_tooltip_text(GaimBuddy *b) { |
| 5575 | 7577 | GaimConnection *gc = b->account->gc; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7578 | OscarData *od = gc->proto_data; |
|
7045
458b55091f8b
[gaim-migrate @ 7608]
Mark Doliner <markdoliner@pidgin.im>
parents:
7038
diff
changeset
|
7579 | aim_userinfo_t *userinfo = aim_locate_finduserinfo(od->sess, b->name); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
7580 | GString *str = g_string_new(""); |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7581 | |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7582 | if (GAIM_BUDDY_IS_ONLINE(b)) { |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
7583 | GaimPresence *presence; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
7584 | GaimStatus *status; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
7585 | const char *message; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
7586 | |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
7587 | oscar_string_append_info(gc, str, "\n", b, userinfo); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
7588 | |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
7589 | presence = gaim_buddy_get_presence(b); |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
7590 | status = gaim_presence_get_active_status(presence); |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
7591 | message = gaim_status_get_attr_string(status, "message"); |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
7592 | |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
7593 | if (message != NULL) { |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
7594 | if (gaim_status_type_get_primitive(gaim_status_get_type(status)) == GAIM_STATUS_AVAILABLE) { |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
7595 | /* Available status messages are plain text */ |
|
12271
01d61e68886e
[gaim-migrate @ 14573]
Mark Doliner <markdoliner@pidgin.im>
parents:
12260
diff
changeset
|
7596 | g_string_append_printf(str, "\n<b>%s:</b> %s", _("Available Message"), message); |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
7597 | } else { |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
7598 | /* Away messages are HTML */ |
|
7091
4430f44e86ad
[gaim-migrate @ 7656]
Mark Doliner <markdoliner@pidgin.im>
parents:
7083
diff
changeset
|
7599 | gchar *tmp1, *tmp2; |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
7600 | tmp2 = gaim_markup_strip_html(message); |
|
10732
5e314ab498bf
[gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents:
10715
diff
changeset
|
7601 | tmp1 = g_markup_escape_text(tmp2, -1); |
|
7091
4430f44e86ad
[gaim-migrate @ 7656]
Mark Doliner <markdoliner@pidgin.im>
parents:
7083
diff
changeset
|
7602 | g_free(tmp2); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
7603 | tmp2 = gaim_str_sub_away_formatters(tmp1, gaim_account_get_username(gaim_connection_get_account(gc))); |
|
8461
920171a59e45
[gaim-migrate @ 9191]
Mark Doliner <markdoliner@pidgin.im>
parents:
8446
diff
changeset
|
7604 | g_free(tmp1); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
7605 | g_string_append_printf(str, "\n<b>%s:</b> %s", _("Away Message"), tmp2); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
7606 | g_free(tmp2); |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
7607 | } |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7608 | } |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
7609 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
7610 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
7611 | return g_string_free(str, FALSE); |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7612 | } |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7613 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7614 | static char *oscar_status_text(GaimBuddy *b) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7615 | { |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7616 | GaimConnection *gc; |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7617 | GaimAccount *account; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7618 | OscarData *od; |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7619 | const GaimPresence *presence; |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7620 | const GaimStatus *status; |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7621 | const char *id; |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7622 | const char *message; |
|
5167
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
7623 | gchar *ret = NULL; |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
7624 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7625 | gc = gaim_account_get_connection(gaim_buddy_get_account(b)); |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7626 | account = gaim_connection_get_account(gc); |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7627 | od = gc->proto_data; |
|
11248
18bdab55515d
[gaim-migrate @ 13417]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11238
diff
changeset
|
7628 | presence = gaim_buddy_get_presence(b); |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7629 | status = gaim_presence_get_active_status(presence); |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7630 | id = gaim_status_get_id(status); |
|
11248
18bdab55515d
[gaim-migrate @ 13417]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11238
diff
changeset
|
7631 | |
|
18bdab55515d
[gaim-migrate @ 13417]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11238
diff
changeset
|
7632 | if (!gaim_presence_is_online(presence)) |
|
18bdab55515d
[gaim-migrate @ 13417]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11238
diff
changeset
|
7633 | { |
|
5167
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
7634 | 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
|
7635 | if (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name)) |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
7636 | ret = g_strdup(_("Not Authorized")); |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
7637 | else |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
7638 | ret = g_strdup(_("Offline")); |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
7639 | } |
|
12365
69cf8ac53d5a
[gaim-migrate @ 14669]
Mark Doliner <markdoliner@pidgin.im>
parents:
12361
diff
changeset
|
7640 | else if (gaim_status_is_available(status) && !strcmp(id, OSCAR_STATUS_ID_AVAILABLE)) |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7641 | { |
|
12365
69cf8ac53d5a
[gaim-migrate @ 14669]
Mark Doliner <markdoliner@pidgin.im>
parents:
12361
diff
changeset
|
7642 | /* Available */ |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7643 | message = gaim_status_get_attr_string(status, "message"); |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7644 | if (message != NULL) |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7645 | { |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7646 | ret = g_markup_escape_text(message, -1); |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7647 | gaim_util_chrreplace(ret, '\n', ' '); |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7648 | } |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7649 | } |
|
12365
69cf8ac53d5a
[gaim-migrate @ 14669]
Mark Doliner <markdoliner@pidgin.im>
parents:
12361
diff
changeset
|
7650 | else if (!gaim_status_is_available(status) && !strcmp(id, OSCAR_STATUS_ID_AWAY)) |
|
11248
18bdab55515d
[gaim-migrate @ 13417]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11238
diff
changeset
|
7651 | { |
|
12365
69cf8ac53d5a
[gaim-migrate @ 14669]
Mark Doliner <markdoliner@pidgin.im>
parents:
12361
diff
changeset
|
7652 | /* Away */ |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7653 | message = gaim_status_get_attr_string(status, "message"); |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7654 | if (message != NULL) |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7655 | { |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7656 | gchar *tmp1, *tmp2; |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7657 | tmp1 = gaim_markup_strip_html(message); |
|
12361
9d2adb3258a8
[gaim-migrate @ 14665]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12350
diff
changeset
|
7658 | gaim_util_chrreplace(tmp1, '\n', ' '); |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7659 | tmp2 = g_markup_escape_text(tmp1, -1); |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7660 | ret = gaim_str_sub_away_formatters(tmp2, gaim_account_get_username(account)); |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7661 | g_free(tmp1); |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7662 | g_free(tmp2); |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7663 | } |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7664 | else |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7665 | { |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7666 | ret = g_strdup(_("Away")); |
|
11510
8f618fb35bd3
[gaim-migrate @ 13755]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11495
diff
changeset
|
7667 | } |
|
11248
18bdab55515d
[gaim-migrate @ 13417]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11238
diff
changeset
|
7668 | } |
|
18bdab55515d
[gaim-migrate @ 13417]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11238
diff
changeset
|
7669 | else |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
7670 | ret = g_strdup(gaim_status_get_name(status)); |
|
5167
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
7671 | |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
7672 | return ret; |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
7673 | } |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
7674 | |
| 5842 | 7675 | |
|
5844
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
7676 | static int oscar_icon_req(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5842 | 7677 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7678 | OscarData *od = gc->proto_data; |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7679 | va_list ap; |
| 5842 | 7680 | fu16_t type; |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7681 | fu8_t flags = 0, length = 0; |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
7682 | guchar *md5 = NULL; |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7683 | |
| 5842 | 7684 | va_start(ap, fr); |
| 7685 | type = va_arg(ap, int); | |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7686 | |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7687 | switch(type) { |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7688 | case 0x0000: |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7689 | case 0x0001: { |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7690 | flags = va_arg(ap, int); |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7691 | length = va_arg(ap, int); |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
7692 | md5 = va_arg(ap, guchar *); |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7693 | |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7694 | if (flags == 0x41) { |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7695 | if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_ICON) && !od->iconconnecting) { |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7696 | od->iconconnecting = TRUE; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7697 | od->set_icon = TRUE; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7698 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON); |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7699 | } else { |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
7700 | struct stat st; |
|
11303
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
7701 | char *iconfile = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(gaim_connection_get_account(gc))); |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
7702 | if (iconfile == NULL) { |
| 8363 | 7703 | aim_ssi_delicon(od->sess); |
|
10589
4e10236e06d4
[gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents:
10574
diff
changeset
|
7704 | } else if (!g_stat(iconfile, &st)) { |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
7705 | guchar *buf = g_malloc(st.st_size); |
|
10589
4e10236e06d4
[gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents:
10574
diff
changeset
|
7706 | FILE *file = g_fopen(iconfile, "rb"); |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
7707 | if (file) { |
|
9532
32470c5a1d58
[gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
9481
diff
changeset
|
7708 | /* XXX - Use g_file_get_contents()? */ |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
7709 | fread(buf, 1, st.st_size, file); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
7710 | fclose(file); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7711 | gaim_debug_info("oscar", |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7712 | "Uploading icon to icon server\n"); |
|
6879
cc7abcef355c
[gaim-migrate @ 7425]
Mark Doliner <markdoliner@pidgin.im>
parents:
6873
diff
changeset
|
7713 | aim_bart_upload(od->sess, buf, st.st_size); |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7714 | } else |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7715 | gaim_debug_error("oscar", |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7716 | "Can't open buddy icon file!\n"); |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
7717 | g_free(buf); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
7718 | } else { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7719 | gaim_debug_error("oscar", |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7720 | "Can't stat buddy icon file!\n"); |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7721 | } |
|
11303
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
7722 | g_free(iconfile); |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7723 | } |
| 8363 | 7724 | } else if (flags == 0x81) { |
|
11303
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
7725 | char *iconfile = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(gaim_connection_get_account(gc))); |
| 8363 | 7726 | if (iconfile == NULL) |
| 7727 | aim_ssi_delicon(od->sess); | |
|
11303
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
7728 | else { |
| 8363 | 7729 | aim_ssi_seticon(od->sess, md5, length); |
|
11303
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
7730 | g_free(iconfile); |
|
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
7731 | } |
| 8363 | 7732 | } |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7733 | } break; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7734 | |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7735 | case 0x0002: { /* We just set an "available" message? */ |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7736 | } break; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7737 | } |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7738 | |
| 5842 | 7739 | va_end(ap); |
|
5844
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
7740 | |
|
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
7741 | return 0; |
| 5842 | 7742 | } |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
7743 | |
| 5575 | 7744 | static void oscar_set_permit_deny(GaimConnection *gc) { |
| 7745 | GaimAccount *account = gaim_connection_get_account(gc); | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7746 | OscarData *od = (OscarData *)gc->proto_data; |
|
10866
40eab743e22b
[gaim-migrate @ 12552]
Mark Doliner <markdoliner@pidgin.im>
parents:
10860
diff
changeset
|
7747 | |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7748 | if (od->sess->ssi.received_data) { |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7749 | switch (account->perm_deny) { |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7750 | case GAIM_PRIVACY_ALLOW_ALL: |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7751 | aim_ssi_setpermdeny(od->sess, 0x01, 0xffffffff); |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7752 | break; |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7753 | case GAIM_PRIVACY_ALLOW_BUDDYLIST: |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7754 | aim_ssi_setpermdeny(od->sess, 0x05, 0xffffffff); |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7755 | break; |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7756 | case GAIM_PRIVACY_ALLOW_USERS: |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7757 | aim_ssi_setpermdeny(od->sess, 0x03, 0xffffffff); |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7758 | break; |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7759 | case GAIM_PRIVACY_DENY_ALL: |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7760 | aim_ssi_setpermdeny(od->sess, 0x02, 0xffffffff); |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7761 | break; |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7762 | case GAIM_PRIVACY_DENY_USERS: |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7763 | aim_ssi_setpermdeny(od->sess, 0x04, 0xffffffff); |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7764 | break; |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7765 | default: |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7766 | aim_ssi_setpermdeny(od->sess, 0x01, 0xffffffff); |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7767 | break; |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7768 | } |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
7769 | } |
| 2086 | 7770 | } |
| 7771 | ||
| 5575 | 7772 | static void oscar_add_permit(GaimConnection *gc, const char *who) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7773 | OscarData *od = (OscarData *)gc->proto_data; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7774 | 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
|
7775 | if (od->sess->ssi.received_data) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
7776 | aim_ssi_addpermit(od->sess, who); |
| 2086 | 7777 | } |
| 7778 | ||
| 5575 | 7779 | static void oscar_add_deny(GaimConnection *gc, const char *who) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7780 | OscarData *od = (OscarData *)gc->proto_data; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7781 | 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
|
7782 | if (od->sess->ssi.received_data) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
7783 | aim_ssi_adddeny(od->sess, who); |
| 2086 | 7784 | } |
| 7785 | ||
| 5575 | 7786 | static void oscar_rem_permit(GaimConnection *gc, const char *who) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7787 | OscarData *od = (OscarData *)gc->proto_data; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7788 | 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
|
7789 | if (od->sess->ssi.received_data) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
7790 | aim_ssi_delpermit(od->sess, who); |
| 2086 | 7791 | } |
| 7792 | ||
| 5575 | 7793 | static void oscar_rem_deny(GaimConnection *gc, const char *who) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7794 | OscarData *od = (OscarData *)gc->proto_data; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7795 | 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
|
7796 | if (od->sess->ssi.received_data) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
7797 | aim_ssi_deldeny(od->sess, who); |
| 2086 | 7798 | } |
| 7799 | ||
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
7800 | static GList * |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
7801 | oscar_status_types(GaimAccount *account) |
| 2086 | 7802 | { |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
7803 | GList *status_types = NULL; |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
7804 | GaimStatusType *type; |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
7805 | |
|
9973
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
7806 | g_return_val_if_fail(account != NULL, NULL); |
|
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
7807 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7808 | /* Oscar-common status types */ |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
7809 | type = gaim_status_type_new_full(GAIM_STATUS_OFFLINE, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
7810 | OSCAR_STATUS_ID_OFFLINE, |
| 10400 | 7811 | _("Offline"), FALSE, TRUE, FALSE); |
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
7812 | status_types = g_list_append(status_types, type); |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
7813 | |
|
10198
d585aa9a3a15
[gaim-migrate @ 11315]
Mark Doliner <markdoliner@pidgin.im>
parents:
10197
diff
changeset
|
7814 | type = gaim_status_type_new_with_attrs(GAIM_STATUS_AVAILABLE, |
|
d585aa9a3a15
[gaim-migrate @ 11315]
Mark Doliner <markdoliner@pidgin.im>
parents:
10197
diff
changeset
|
7815 | OSCAR_STATUS_ID_AVAILABLE, |
|
d585aa9a3a15
[gaim-migrate @ 11315]
Mark Doliner <markdoliner@pidgin.im>
parents:
10197
diff
changeset
|
7816 | _("Available"), TRUE, TRUE, FALSE, |
|
d585aa9a3a15
[gaim-migrate @ 11315]
Mark Doliner <markdoliner@pidgin.im>
parents:
10197
diff
changeset
|
7817 | "message", _("Message"), |
|
d585aa9a3a15
[gaim-migrate @ 11315]
Mark Doliner <markdoliner@pidgin.im>
parents:
10197
diff
changeset
|
7818 | gaim_value_new(GAIM_TYPE_STRING), NULL); |
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
7819 | status_types = g_list_append(status_types, type); |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
7820 | |
|
10195
18379f7920fa
[gaim-migrate @ 11310]
Mark Doliner <markdoliner@pidgin.im>
parents:
10157
diff
changeset
|
7821 | type = gaim_status_type_new_with_attrs(GAIM_STATUS_AWAY, |
|
18379f7920fa
[gaim-migrate @ 11310]
Mark Doliner <markdoliner@pidgin.im>
parents:
10157
diff
changeset
|
7822 | OSCAR_STATUS_ID_AWAY, |
|
18379f7920fa
[gaim-migrate @ 11310]
Mark Doliner <markdoliner@pidgin.im>
parents:
10157
diff
changeset
|
7823 | _("Away"), TRUE, TRUE, FALSE, |
|
18379f7920fa
[gaim-migrate @ 11310]
Mark Doliner <markdoliner@pidgin.im>
parents:
10157
diff
changeset
|
7824 | "message", _("Message"), |
|
18379f7920fa
[gaim-migrate @ 11310]
Mark Doliner <markdoliner@pidgin.im>
parents:
10157
diff
changeset
|
7825 | gaim_value_new(GAIM_TYPE_STRING), NULL); |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7826 | status_types = g_list_append(status_types, type); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7827 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7828 | type = gaim_status_type_new_full(GAIM_STATUS_HIDDEN, |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7829 | OSCAR_STATUS_ID_INVISIBLE, |
|
10198
d585aa9a3a15
[gaim-migrate @ 11315]
Mark Doliner <markdoliner@pidgin.im>
parents:
10197
diff
changeset
|
7830 | _("Invisible"), TRUE, TRUE, FALSE); |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7831 | status_types = g_list_append(status_types, type); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7832 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7833 | if (aim_sn_is_icq(gaim_account_get_username(account)) == FALSE ) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7834 | return status_types; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7835 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7836 | /* ICQ-specific status types */ |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
7837 | |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
7838 | type = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
7839 | OSCAR_STATUS_ID_FREE4CHAT, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
7840 | _("Free For Chat"), TRUE, TRUE, FALSE); |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
7841 | status_types = g_list_append(status_types, type); |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
7842 | |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
7843 | type = gaim_status_type_new_full(GAIM_STATUS_UNAVAILABLE, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
7844 | OSCAR_STATUS_ID_OCCUPIED, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
7845 | _("Occupied"), TRUE, TRUE, FALSE); |
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
7846 | status_types = g_list_append(status_types, type); |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
7847 | |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
7848 | type = gaim_status_type_new_full(GAIM_STATUS_EXTENDED_AWAY, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
7849 | OSCAR_STATUS_ID_DND, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
7850 | _("Do Not Disturb"), TRUE, TRUE, FALSE); |
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
7851 | status_types = g_list_append(status_types, type); |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
7852 | |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
7853 | type = gaim_status_type_new_full(GAIM_STATUS_EXTENDED_AWAY, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
7854 | OSCAR_STATUS_ID_NA, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
7855 | _("Not Available"), TRUE, TRUE, FALSE); |
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
7856 | status_types = g_list_append(status_types, type); |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
7857 | |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
7858 | return status_types; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7859 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7860 | |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7861 | static void oscar_ssi_editcomment(struct name_data *data, const char *text) { |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
7862 | GaimConnection *gc = data->gc; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
7863 | OscarData *od = gc->proto_data; |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7864 | GaimBuddy *b; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7865 | GaimGroup *g; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7866 | |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7867 | if (!(b = gaim_find_buddy(gaim_connection_get_account(data->gc), data->name))) { |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7868 | oscar_free_name_data(data); |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7869 | return; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7870 | } |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7871 | |
| 12088 | 7872 | if (!(g = gaim_buddy_get_group(b))) { |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7873 | oscar_free_name_data(data); |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7874 | return; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7875 | } |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7876 | |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7877 | aim_ssi_editcomment(od->sess, g->name, data->name, text); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
7878 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
7879 | if (!aim_sncmp(data->name, gc->account->username)) |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
7880 | gaim_check_comment(od, text); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
7881 | |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7882 | oscar_free_name_data(data); |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7883 | } |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7884 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7885 | static void oscar_buddycb_edit_comment(GaimBlistNode *node, gpointer ignore) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7886 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7887 | GaimBuddy *buddy; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7888 | GaimConnection *gc; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7889 | OscarData *od; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7890 | struct name_data *data; |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7891 | GaimGroup *g; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7892 | char *comment; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7893 | gchar *comment_utf8; |
| 9631 | 7894 | gchar *title; |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7895 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7896 | g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node)); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7897 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7898 | buddy = (GaimBuddy *) node; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7899 | gc = gaim_account_get_connection(buddy->account); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7900 | od = gc->proto_data; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7901 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7902 | data = g_new(struct name_data, 1); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7903 | |
| 12088 | 7904 | if (!(g = gaim_buddy_get_group(buddy))) |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7905 | return; |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7906 | comment = aim_ssi_getcomment(od->sess->ssi.local, g->name, buddy->name); |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7907 | comment_utf8 = comment ? gaim_utf8_try_convert(comment) : NULL; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7908 | |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7909 | data->gc = gc; |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7910 | data->name = g_strdup(buddy->name); |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7911 | data->nick = NULL; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7912 | |
| 9631 | 7913 | title = g_strdup_printf(_("Buddy Comment for %s"), data->name); |
| 7914 | gaim_request_input(gc, title, _("Buddy Comment:"), NULL, | |
| 8697 | 7915 | comment_utf8, TRUE, FALSE, NULL, |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7916 | _("OK"), G_CALLBACK(oscar_ssi_editcomment), |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7917 | _("Cancel"), G_CALLBACK(oscar_free_name_data), |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7918 | data); |
| 9631 | 7919 | g_free(title); |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7920 | |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7921 | free(comment); |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7922 | g_free(comment_utf8); |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7923 | } |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7924 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7925 | static GList *oscar_buddy_menu(GaimBuddy *buddy) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7926 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7927 | GaimConnection *gc = gaim_account_get_connection(buddy->account); |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7928 | OscarData *od = gc->proto_data; |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7929 | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7930 | GList *m = NULL; |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7931 | GaimBlistNodeAction *act; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7932 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7933 | act = gaim_blist_node_action_new(_("Edit Buddy Comment"), |
| 10662 | 7934 | oscar_buddycb_edit_comment, NULL, NULL); |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7935 | m = g_list_append(m, act); |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
7936 | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7937 | if (od->icq) { |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
7938 | #if 0 |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7939 | act = gaim_blist_node_action_new(_("Get Status Msg"), |
| 10662 | 7940 | oscar_get_icqstatusmsg, NULL, NULL); |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7941 | m = g_list_append(m, act); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
7942 | #endif |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7943 | } else { |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
7944 | aim_userinfo_t *userinfo; |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7945 | userinfo = aim_locate_finduserinfo(od->sess, buddy->name); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7946 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7947 | if (userinfo && aim_sncmp(gaim_account_get_username(buddy->account), buddy->name) && |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7948 | GAIM_BUDDY_IS_ONLINE(buddy)) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7949 | |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
7950 | if (userinfo->capabilities & AIM_CAPS_DIRECTIM) { |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7951 | act = gaim_blist_node_action_new(_("Direct IM"), |
| 10662 | 7952 | oscar_ask_direct_im, NULL, NULL); |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7953 | m = g_list_append(m, act); |
|
5917
a79e79eca294
[gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents:
5904
diff
changeset
|
7954 | } |
|
9466
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
7955 | #if 0 |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
7956 | if (userinfo->capabilities & AIM_CAPS_GETFILE) { |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7957 | act = gaim_blist_node_action_new(_("Get File"), |
| 10662 | 7958 | oscar_ask_getfile, NULL, NULL); |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7959 | m = g_list_append(m, act); |
|
5917
a79e79eca294
[gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents:
5904
diff
changeset
|
7960 | } |
|
4826
ce211ce6a336
[gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents:
4825
diff
changeset
|
7961 | #endif |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7962 | } |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7963 | } |
|
5197
ab4d919050d7
[gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents:
5167
diff
changeset
|
7964 | |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7965 | if (od->sess->ssi.received_data) { |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7966 | char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, buddy->name); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7967 | if (gname && aim_ssi_waitingforauth(od->sess->ssi.local, gname, buddy->name)) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7968 | act = gaim_blist_node_action_new(_("Re-request Authorization"), |
| 10662 | 7969 | gaim_auth_sendrequest_menu, NULL, NULL); |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7970 | m = g_list_append(m, act); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7971 | } |
| 4916 | 7972 | } |
|
10157
650fd69090cd
[gaim-migrate @ 11237]
Mark Doliner <markdoliner@pidgin.im>
parents:
10152
diff
changeset
|
7973 | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7974 | return m; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7975 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7976 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7977 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7978 | static GList *oscar_blist_node_menu(GaimBlistNode *node) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7979 | if(GAIM_BLIST_NODE_IS_BUDDY(node)) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7980 | return oscar_buddy_menu((GaimBuddy *) node); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7981 | } else { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7982 | return NULL; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7983 | } |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7984 | } |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7985 | |
| 10570 | 7986 | static void |
| 7987 | oscar_icq_privacy_opts(GaimConnection *gc, GaimRequestFields *fields) | |
| 7988 | { | |
| 7989 | OscarData *od = gc->proto_data; | |
| 7990 | GaimAccount *account = gaim_connection_get_account(gc); | |
| 7991 | GaimRequestField *f; | |
| 7992 | gboolean auth, hide_ip, web_aware; | |
| 7993 | ||
| 7994 | f = gaim_request_fields_get_field(fields, "authorization"); | |
| 7995 | auth = gaim_request_field_bool_get_value(f); | |
| 7996 | ||
| 7997 | f = gaim_request_fields_get_field(fields, "hide_ip"); | |
| 7998 | hide_ip = gaim_request_field_bool_get_value(f); | |
| 7999 | ||
| 8000 | f = gaim_request_fields_get_field(fields, "web_aware"); | |
| 8001 | web_aware = gaim_request_field_bool_get_value(f); | |
| 8002 | ||
| 8003 | gaim_account_set_bool(account, "authorization", auth); | |
| 8004 | gaim_account_set_bool(account, "hide_ip", hide_ip); | |
| 8005 | gaim_account_set_bool(account, "web_aware", web_aware); | |
| 8006 | ||
| 8007 | aim_icq_setsecurity(od->sess, auth, web_aware, hide_ip); | |
| 8008 | } | |
| 8009 | ||
| 8010 | static void | |
| 8011 | oscar_show_icq_privacy_opts(GaimPluginAction *action) | |
| 8012 | { | |
| 8013 | GaimConnection *gc = (GaimConnection *) action->context; | |
| 8014 | GaimAccount *account = gaim_connection_get_account(gc); | |
| 8015 | GaimRequestFields *fields; | |
| 8016 | GaimRequestFieldGroup *g; | |
| 8017 | GaimRequestField *f; | |
| 8018 | gboolean auth, hide_ip, web_aware; | |
| 8019 | ||
| 8020 | auth = gaim_account_get_bool(account, "authorization", OSCAR_DEFAULT_AUTHORIZATION); | |
| 8021 | hide_ip = gaim_account_get_bool(account, "hide_ip", OSCAR_DEFAULT_HIDE_IP); | |
| 8022 | web_aware = gaim_account_get_bool(account, "web_aware", OSCAR_DEFAULT_WEB_AWARE); | |
| 8023 | ||
| 8024 | fields = gaim_request_fields_new(); | |
| 8025 | ||
| 8026 | g = gaim_request_field_group_new(NULL); | |
| 8027 | ||
| 8028 | f = gaim_request_field_bool_new("authorization", _("Require authorization"), auth); | |
| 8029 | gaim_request_field_group_add_field(g, f); | |
| 8030 | ||
| 8031 | f = gaim_request_field_bool_new("hide_ip", _("Hide IP address"), hide_ip); | |
| 8032 | gaim_request_field_group_add_field(g, f); | |
| 8033 | ||
| 8034 | f = gaim_request_field_bool_new("web_aware", _("Web aware"), web_aware); | |
| 8035 | gaim_request_field_group_add_field(g, f); | |
| 8036 | ||
| 8037 | gaim_request_fields_add_group(fields, g); | |
| 8038 | ||
| 8039 | gaim_request_fields(gc, _("ICQ Privacy Options"), _("ICQ Privacy Options"), | |
| 8040 | NULL, fields, | |
| 8041 | _("OK"), G_CALLBACK(oscar_icq_privacy_opts), | |
| 8042 | _("Cancel"), NULL, gc); | |
| 8043 | } | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
8044 | |
| 5575 | 8045 | static void oscar_format_screenname(GaimConnection *gc, const char *nick) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
8046 | OscarData *od = gc->proto_data; |
| 5575 | 8047 | 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
|
8048 | if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH)) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8049 | od->setnick = TRUE; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8050 | od->newsn = g_strdup(nick); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8051 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8052 | } else { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8053 | 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
|
8054 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8055 | } else { |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
8056 | gaim_notify_error(gc, NULL, _("The new formatting is invalid."), |
|
8152
f26c9406b4b3
[gaim-migrate @ 8864]
Mark Doliner <markdoliner@pidgin.im>
parents:
8151
diff
changeset
|
8057 | _("Screen name formatting can change only capitalization and whitespace.")); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8058 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8059 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8060 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8061 | static void oscar_show_format_screenname(GaimPluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8062 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8063 | GaimConnection *gc = (GaimConnection *) action->context; |
|
8152
f26c9406b4b3
[gaim-migrate @ 8864]
Mark Doliner <markdoliner@pidgin.im>
parents:
8151
diff
changeset
|
8064 | gaim_request_input(gc, NULL, _("New screen name formatting:"), NULL, |
| 8697 | 8065 | gaim_connection_get_display_name(gc), FALSE, FALSE, NULL, |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
8066 | _("OK"), G_CALLBACK(oscar_format_screenname), |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
8067 | _("Cancel"), NULL, |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
8068 | gc); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8069 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8070 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8071 | static void oscar_confirm_account(GaimPluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8072 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8073 | GaimConnection *gc = (GaimConnection *) action->context; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
8074 | OscarData *od = gc->proto_data; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8075 | 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
|
8076 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8077 | if (conn) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8078 | aim_admin_reqconfirm(od->sess, conn); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8079 | } else { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8080 | od->conf = TRUE; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8081 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8082 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8083 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8084 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8085 | static void oscar_show_email(GaimPluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8086 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8087 | GaimConnection *gc = (GaimConnection *) action->context; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
8088 | OscarData *od = gc->proto_data; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8089 | 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
|
8090 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8091 | if (conn) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8092 | aim_admin_getinfo(od->sess, conn, 0x11); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8093 | } else { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8094 | od->reqemail = TRUE; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8095 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8096 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8097 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8098 | |
| 5575 | 8099 | static void oscar_change_email(GaimConnection *gc, const char *email) |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
8100 | { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
8101 | OscarData *od = gc->proto_data; |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
8102 | 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
|
8103 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
8104 | if (conn) { |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
8105 | aim_admin_setemail(od->sess, conn, email); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
8106 | } else { |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
8107 | od->setemail = TRUE; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
8108 | od->email = g_strdup(email); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
8109 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
8110 | } |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
8111 | } |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
8112 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8113 | static void oscar_show_change_email(GaimPluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8114 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8115 | GaimConnection *gc = (GaimConnection *) action->context; |
|
6035
b245be9cbe3b
[gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents:
6029
diff
changeset
|
8116 | gaim_request_input(gc, NULL, _("Change Address To:"), NULL, NULL, |
| 8697 | 8117 | FALSE, FALSE, NULL, |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
8118 | _("OK"), G_CALLBACK(oscar_change_email), |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
8119 | _("Cancel"), NULL, |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
8120 | gc); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8121 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8122 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8123 | static void oscar_show_awaitingauth(GaimPluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8124 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8125 | GaimConnection *gc = (GaimConnection *) action->context; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
8126 | OscarData *od = gc->proto_data; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8127 | gchar *nombre, *text, *tmp; |
| 6695 | 8128 | GaimBlistNode *gnode, *cnode, *bnode; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8129 | int num=0; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8130 | |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
8131 | text = g_strdup(""); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8132 | |
| 4785 | 8133 | for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) { |
| 6695 | 8134 | GaimGroup *group = (GaimGroup *)gnode; |
| 4785 | 8135 | if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) |
| 8136 | continue; | |
| 6695 | 8137 | for (cnode = gnode->child; cnode; cnode = cnode->next) { |
| 8138 | if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) | |
| 4785 | 8139 | continue; |
| 6695 | 8140 | for (bnode = cnode->child; bnode; bnode = bnode->next) { |
| 8141 | GaimBuddy *buddy = (GaimBuddy *)bnode; | |
| 8142 | if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
| 8143 | continue; | |
| 8144 | if (buddy->account == gc->account && aim_ssi_waitingforauth(od->sess->ssi.local, group->name, buddy->name)) { | |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
8145 | if (gaim_buddy_get_alias_only(buddy)) |
|
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
8146 | nombre = g_strdup_printf(" %s (%s)", buddy->name, gaim_buddy_get_alias_only(buddy)); |
| 6695 | 8147 | else |
| 8148 | nombre = g_strdup_printf(" %s", buddy->name); | |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
8149 | tmp = g_strdup_printf("%s%s<br>", text, nombre); |
| 6695 | 8150 | g_free(text); |
| 8151 | text = tmp; | |
| 8152 | g_free(nombre); | |
| 8153 | num++; | |
| 8154 | } | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8155 | } |
| 2979 | 8156 | } |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8157 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8158 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8159 | if (!num) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8160 | g_free(text); |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
8161 | text = g_strdup(_("<i>you are not waiting for authorization</i>")); |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
8162 | } |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
8163 | |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
8164 | gaim_notify_formatted(gc, NULL, _("You are awaiting authorization from " |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
8165 | "the following buddies"), _("You can re-request " |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
8166 | "authorization from these buddies by " |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
8167 | "right-clicking on them and selecting " |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
8168 | "\"Re-request Authorization.\""), text, NULL, NULL); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8169 | g_free(text); |
| 2979 | 8170 | } |
| 8171 | ||
|
7080
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
8172 | static void search_by_email_cb(GaimConnection *gc, const char *email) |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
8173 | { |
|
8950
1b90ece5fb4f
[gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents:
8907
diff
changeset
|
8174 | OscarData *od = (OscarData *)gc->proto_data; |
|
1b90ece5fb4f
[gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents:
8907
diff
changeset
|
8175 | |
|
1b90ece5fb4f
[gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents:
8907
diff
changeset
|
8176 | aim_search_address(od->sess, od->conn, email); |
|
7080
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
8177 | } |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
8178 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8179 | static void oscar_show_find_email(GaimPluginAction *action) |
|
7080
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
8180 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8181 | GaimConnection *gc = (GaimConnection *) action->context; |
|
7080
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
8182 | gaim_request_input(gc, _("Find Buddy by E-mail"), |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
8183 | _("Search for a buddy by e-mail address"), |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
8184 | _("Type the e-mail address of the buddy you are " |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
8185 | "searching for."), |
| 8697 | 8186 | NULL, FALSE, FALSE, NULL, |
|
7080
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
8187 | _("Search"), G_CALLBACK(search_by_email_cb), |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
8188 | _("Cancel"), NULL, gc); |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
8189 | } |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
8190 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8191 | static void oscar_show_set_info(GaimPluginAction *action) |
|
7067
c57295414efa
[gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents:
7063
diff
changeset
|
8192 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8193 | GaimConnection *gc = (GaimConnection *) action->context; |
|
7067
c57295414efa
[gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents:
7063
diff
changeset
|
8194 | gaim_account_request_change_user_info(gaim_connection_get_account(gc)); |
|
c57295414efa
[gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents:
7063
diff
changeset
|
8195 | } |
|
c57295414efa
[gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents:
7063
diff
changeset
|
8196 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8197 | static void oscar_show_set_info_icqurl(GaimPluginAction *action) |
| 8576 | 8198 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8199 | GaimConnection *gc = (GaimConnection *) action->context; |
|
10240
09342bc554d9
[gaim-migrate @ 11377]
Herman Bloggs <herman@bluedigits.com>
parents:
10209
diff
changeset
|
8200 | gaim_notify_uri(gc, "http://www.icq.com/whitepages/user_details.php"); |
| 8576 | 8201 | } |
| 8202 | ||
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8203 | static void oscar_change_pass(GaimPluginAction *action) |
|
7063
4bfe512a4b8c
[gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents:
7060
diff
changeset
|
8204 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8205 | GaimConnection *gc = (GaimConnection *) action->context; |
|
7063
4bfe512a4b8c
[gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents:
7060
diff
changeset
|
8206 | gaim_account_request_change_password(gaim_connection_get_account(gc)); |
|
4bfe512a4b8c
[gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents:
7060
diff
changeset
|
8207 | } |
|
4bfe512a4b8c
[gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents:
7060
diff
changeset
|
8208 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8209 | static void oscar_show_chpassurl(GaimPluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8210 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8211 | GaimConnection *gc = (GaimConnection *) action->context; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
8212 | OscarData *od = gc->proto_data; |
| 5575 | 8213 | gchar *substituted = gaim_strreplace(od->sess->authinfo->chpassurl, "%s", gaim_account_get_username(gaim_connection_get_account(gc))); |
|
10240
09342bc554d9
[gaim-migrate @ 11377]
Herman Bloggs <herman@bluedigits.com>
parents:
10209
diff
changeset
|
8214 | gaim_notify_uri(gc, substituted); |
|
5517
1d7b99ac846c
[gaim-migrate @ 5916]
Mark Doliner <markdoliner@pidgin.im>
parents:
5498
diff
changeset
|
8215 | g_free(substituted); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8216 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8217 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8218 | static void oscar_show_imforwardingurl(GaimPluginAction *action) |
|
7026
7828abff32da
[gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents:
7023
diff
changeset
|
8219 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8220 | GaimConnection *gc = (GaimConnection *) action->context; |
|
10240
09342bc554d9
[gaim-migrate @ 11377]
Herman Bloggs <herman@bluedigits.com>
parents:
10209
diff
changeset
|
8221 | gaim_notify_uri(gc, "http://mymobile.aol.com/dbreg/register?action=imf&clientID=1"); |
|
7026
7828abff32da
[gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents:
7023
diff
changeset
|
8222 | } |
|
7828abff32da
[gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents:
7023
diff
changeset
|
8223 | |
| 5842 | 8224 | static void oscar_set_icon(GaimConnection *gc, const char *iconfile) |
| 8225 | { | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
8226 | OscarData *od = gc->proto_data; |
|
5844
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
8227 | aim_session_t *sess = od->sess; |
| 5842 | 8228 | FILE *file; |
| 8229 | struct stat st; | |
|
5844
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
8230 | |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
8231 | if (iconfile == NULL) { |
| 8363 | 8232 | aim_ssi_delicon(od->sess); |
|
10589
4e10236e06d4
[gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents:
10574
diff
changeset
|
8233 | } else if (!g_stat(iconfile, &st)) { |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
8234 | guchar *buf = g_malloc(st.st_size); |
|
10589
4e10236e06d4
[gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents:
10574
diff
changeset
|
8235 | file = g_fopen(iconfile, "rb"); |
|
11404
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
8236 | if (file) |
|
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
8237 | { |
|
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
8238 | GaimCipher *cipher; |
|
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
8239 | GaimCipherContext *context; |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
8240 | guchar md5[16]; |
|
11404
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
8241 | int len; |
|
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
8242 | |
|
9532
32470c5a1d58
[gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
9481
diff
changeset
|
8243 | /* XXX - Use g_file_get_contents()? */ |
|
11404
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
8244 | len = fread(buf, 1, st.st_size, file); |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
8245 | fclose(file); |
|
11404
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
8246 | |
|
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
8247 | cipher = gaim_ciphers_find_cipher("md5"); |
|
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
8248 | context = gaim_cipher_context_new(cipher, NULL); |
|
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
8249 | gaim_cipher_context_append(context, buf, len); |
|
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
8250 | gaim_cipher_context_digest(context, 16, md5, NULL); |
|
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
8251 | gaim_cipher_context_destroy(context); |
|
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
8252 | |
| 5842 | 8253 | aim_ssi_seticon(sess, md5, 16); |
| 8254 | } else | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
8255 | gaim_debug_error("oscar", |
| 5842 | 8256 | "Can't open buddy icon file!\n"); |
| 8257 | g_free(buf); | |
| 8258 | } else | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
8259 | gaim_debug_error("oscar", |
| 5842 | 8260 | "Can't stat buddy icon file!\n"); |
| 8261 | } | |
| 8262 | ||
| 8263 | ||
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8264 | static GList *oscar_actions(GaimPlugin *plugin, gpointer context) |
| 2086 | 8265 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8266 | GaimConnection *gc = (GaimConnection *) context; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
8267 | OscarData *od = gc->proto_data; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8268 | GList *m = NULL; |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8269 | GaimPluginAction *act; |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8270 | |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8271 | act = gaim_plugin_action_new(_("Set User Info..."), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8272 | oscar_show_set_info); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8273 | m = g_list_append(m, act); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8274 | |
| 10570 | 8275 | if (od->icq) |
| 8276 | { | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8277 | act = gaim_plugin_action_new(_("Set User Info (URL)..."), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8278 | oscar_show_set_info_icqurl); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8279 | m = g_list_append(m, act); |
| 8576 | 8280 | } |
| 8281 | ||
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8282 | act = gaim_plugin_action_new(_("Change Password..."), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8283 | oscar_change_pass); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8284 | m = g_list_append(m, act); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
8285 | |
| 10570 | 8286 | if (od->sess->authinfo->chpassurl != NULL) |
| 8287 | { | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8288 | act = gaim_plugin_action_new(_("Change Password (URL)"), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8289 | oscar_show_chpassurl); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8290 | m = g_list_append(m, act); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8291 | |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8292 | act = gaim_plugin_action_new(_("Configure IM Forwarding (URL)"), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8293 | oscar_show_imforwardingurl); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8294 | m = g_list_append(m, act); |
|
7026
7828abff32da
[gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents:
7023
diff
changeset
|
8295 | } |
|
7828abff32da
[gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents:
7023
diff
changeset
|
8296 | |
| 10570 | 8297 | m = g_list_append(m, NULL); |
| 8298 | ||
| 8299 | if (od->icq) | |
| 8300 | { | |
| 8301 | /* ICQ actions */ | |
|
12243
7400b735e616
[gaim-migrate @ 14545]
Richard Laager <rlaager@pidgin.im>
parents:
12216
diff
changeset
|
8302 | act = gaim_plugin_action_new(_("Show Privacy Options..."), |
| 10570 | 8303 | oscar_show_icq_privacy_opts); |
| 8304 | m = g_list_append(m, act); | |
| 8305 | } | |
| 8306 | else | |
| 8307 | { | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
8308 | /* AIM actions */ |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8309 | act = gaim_plugin_action_new(_("Format Screen Name..."), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8310 | oscar_show_format_screenname); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8311 | m = g_list_append(m, act); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8312 | |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8313 | act = gaim_plugin_action_new(_("Confirm Account"), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8314 | oscar_confirm_account); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8315 | m = g_list_append(m, act); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8316 | |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8317 | act = gaim_plugin_action_new(_("Display Currently Registered Address"), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8318 | oscar_show_email); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8319 | m = g_list_append(m, act); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8320 | |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8321 | act = gaim_plugin_action_new(_("Change Currently Registered Address..."), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8322 | oscar_show_change_email); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8323 | m = g_list_append(m, act); |
| 2086 | 8324 | } |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8325 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8326 | m = g_list_append(m, NULL); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8327 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8328 | act = gaim_plugin_action_new(_("Show Buddies Awaiting Authorization"), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8329 | oscar_show_awaitingauth); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8330 | m = g_list_append(m, act); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8331 | |
| 2086 | 8332 | m = g_list_append(m, NULL); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8333 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8334 | act = gaim_plugin_action_new(_("Search for Buddy by Email..."), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8335 | oscar_show_find_email); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8336 | m = g_list_append(m, act); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
8337 | |
|
8591
ae42ad1cd127
[gaim-migrate @ 9342]
Mark Doliner <markdoliner@pidgin.im>
parents:
8590
diff
changeset
|
8338 | #if 0 |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8339 | act = gaim_plugin_action_new(_("Search for Buddy by Information"), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8340 | show_find_info); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8341 | m = g_list_append(m, act); |
|
8591
ae42ad1cd127
[gaim-migrate @ 9342]
Mark Doliner <markdoliner@pidgin.im>
parents:
8590
diff
changeset
|
8342 | #endif |
| 2086 | 8343 | |
| 8344 | return m; | |
| 8345 | } | |
| 8346 | ||
| 5575 | 8347 | static void oscar_change_passwd(GaimConnection *gc, const char *old, const char *new) |
| 2086 | 8348 | { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
8349 | OscarData *od = gc->proto_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
8350 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
8351 | if (od->icq) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
8352 | aim_icq_changepasswd(od->sess, new); |
| 2086 | 8353 | } else { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
8354 | 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
|
8355 | if (conn) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
8356 | aim_admin_changepasswd(od->sess, conn, new, old); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
8357 | } else { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
8358 | od->chpass = TRUE; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
8359 | od->oldp = g_strdup(old); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
8360 | od->newp = g_strdup(new); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
8361 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
8362 | } |
| 2086 | 8363 | } |
| 8364 | } | |
| 8365 | ||
|
6059
9934c862ca14
[gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents:
6053
diff
changeset
|
8366 | static void oscar_convo_closed(GaimConnection *gc, const char *who) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
8367 | { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
8368 | OscarData *od = gc->proto_data; |
| 8971 | 8369 | struct oscar_direct_im *dim = oscar_direct_im_find(od, who); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
8370 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
8371 | if (!dim) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
8372 | return; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
8373 | |
| 8971 | 8374 | oscar_direct_im_destroy(od, dim); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
8375 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
8376 | |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8377 | static void |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8378 | recent_buddies_cb(const char *name, GaimPrefType type, gpointer value, gpointer data) |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8379 | { |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8380 | GaimConnection *gc = data; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8381 | OscarData *od = gc->proto_data; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8382 | aim_session_t *sess = od->sess; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8383 | fu32_t presence; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8384 | |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8385 | presence = aim_ssi_getpresence(sess->ssi.local); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8386 | |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8387 | if (value) { |
|
9992
d733f96bfc7b
[gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents:
9991
diff
changeset
|
8388 | /* Based on the packet capture I thought it was the first one */ |
|
d733f96bfc7b
[gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents:
9991
diff
changeset
|
8389 | /* Stu thinks it's the second one. */ |
|
d733f96bfc7b
[gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents:
9991
diff
changeset
|
8390 | /* presence |= 0x00400000; */ |
|
9971
8291bafb0025
[gaim-migrate @ 10882]
Daniel Atallah <datallah@pidgin.im>
parents:
9948
diff
changeset
|
8391 | presence &= ~0x00020000; |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8392 | aim_ssi_setpresence(sess, presence); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8393 | } else { |
|
9992
d733f96bfc7b
[gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents:
9991
diff
changeset
|
8394 | /* presence &= ~0x00400000; */ |
|
9971
8291bafb0025
[gaim-migrate @ 10882]
Daniel Atallah <datallah@pidgin.im>
parents:
9948
diff
changeset
|
8395 | presence |= 0x00020000; |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8396 | aim_ssi_setpresence(sess, presence); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8397 | } |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8398 | } |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8399 | |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8400 | static GaimPluginPrefFrame * |
|
9936
7cfb397cc0d9
[gaim-migrate @ 10828]
Mark Doliner <markdoliner@pidgin.im>
parents:
9935
diff
changeset
|
8401 | get_plugin_pref_frame(GaimPlugin *plugin) |
|
7cfb397cc0d9
[gaim-migrate @ 10828]
Mark Doliner <markdoliner@pidgin.im>
parents:
9935
diff
changeset
|
8402 | { |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8403 | GaimPluginPrefFrame *frame; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8404 | GaimPluginPref *ppref; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8405 | |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8406 | frame = gaim_plugin_pref_frame_new(); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8407 | |
|
12317
3a2f08276e58
[gaim-migrate @ 14621]
Richard Laager <rlaager@pidgin.im>
parents:
12271
diff
changeset
|
8408 | #ifdef USE_PRPL_PREFERENCES |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8409 | ppref = gaim_plugin_pref_new_with_name_and_label("/plugins/prpl/oscar/recent_buddies", _("Use recent buddies group")); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8410 | gaim_plugin_pref_frame_add(frame, ppref); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8411 | |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8412 | ppref = gaim_plugin_pref_new_with_name_and_label("/plugins/prpl/oscar/show_idle", _("Show how long you have been idle")); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8413 | gaim_plugin_pref_frame_add(frame, ppref); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
8414 | #endif |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
8415 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
8416 | ppref = gaim_plugin_pref_new_with_label(_("File Transfers")); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
8417 | gaim_plugin_pref_frame_add(frame, ppref); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
8418 | |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
8419 | ppref = gaim_plugin_pref_new_with_name_and_label( |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
8420 | "/plugins/prpl/oscar/use_rv_proxy", |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
8421 | _("Use AIM/ICQ proxy server (Slower/More Secure/Usually Works)")); |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
8422 | gaim_plugin_pref_frame_add(frame, ppref); |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8423 | |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8424 | return frame; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8425 | } |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8426 | |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8427 | static const char * |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8428 | oscar_normalize(const GaimAccount *account, const char *str) |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8429 | { |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8430 | static char buf[BUF_LEN]; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8431 | char *tmp1, *tmp2; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8432 | int i, j; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8433 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8434 | g_return_val_if_fail(str != NULL, NULL); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8435 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8436 | strncpy(buf, str, BUF_LEN); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8437 | for (i=0, j=0; buf[j]; i++, j++) |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8438 | { |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8439 | while (buf[j] == ' ') |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8440 | j++; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8441 | buf[i] = buf[j]; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8442 | } |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8443 | buf[i] = '\0'; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8444 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8445 | tmp1 = g_utf8_strdown(buf, -1); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8446 | tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8447 | g_snprintf(buf, sizeof(buf), "%s", tmp2); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8448 | g_free(tmp2); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8449 | g_free(tmp1); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8450 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8451 | return buf; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8452 | } |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8453 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8454 | static GaimPluginProtocolInfo prpl_info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8455 | { |
| 9308 | 8456 | OPT_PROTO_MAIL_CHECK | OPT_PROTO_IM_IMAGE, |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8457 | NULL, /* user_splits */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8458 | NULL, /* protocol_options */ |
| 10674 | 8459 | {"jpeg,gif,bmp,ico", 48, 48, 50, 50, |
| 8460 | GAIM_ICON_SCALE_SEND | GAIM_ICON_SCALE_DISPLAY}, /* icon_spec */ | |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8461 | oscar_list_icon, /* list_icon */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8462 | oscar_list_emblems, /* list_emblems */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8463 | oscar_status_text, /* status_text */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8464 | oscar_tooltip_text, /* tooltip_text */ |
|
9973
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
8465 | oscar_status_types, /* status_types */ |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8466 | oscar_blist_node_menu, /* blist_node_menu */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8467 | oscar_chat_info, /* chat_info */ |
|
9754
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
8468 | oscar_chat_info_defaults, /* chat_info_defaults */ |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8469 | oscar_login, /* login */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8470 | oscar_close, /* close */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8471 | oscar_send_im, /* send_im */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8472 | oscar_set_info, /* set_info */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8473 | oscar_send_typing, /* send_typing */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8474 | oscar_get_info, /* get_info */ |
|
9973
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
8475 | oscar_set_status, /* set_status */ |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8476 | oscar_set_idle, /* set_idle */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8477 | oscar_change_passwd, /* change_passwd */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8478 | oscar_add_buddy, /* add_buddy */ |
|
10866
40eab743e22b
[gaim-migrate @ 12552]
Mark Doliner <markdoliner@pidgin.im>
parents:
10860
diff
changeset
|
8479 | NULL, /* add_buddies */ |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8480 | oscar_remove_buddy, /* remove_buddy */ |
|
10866
40eab743e22b
[gaim-migrate @ 12552]
Mark Doliner <markdoliner@pidgin.im>
parents:
10860
diff
changeset
|
8481 | NULL, /* remove_buddies */ |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8482 | oscar_add_permit, /* add_permit */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8483 | oscar_add_deny, /* add_deny */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8484 | oscar_rem_permit, /* rem_permit */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8485 | oscar_rem_deny, /* rem_deny */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8486 | oscar_set_permit_deny, /* set_permit_deny */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8487 | oscar_join_chat, /* join_chat */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8488 | NULL, /* reject_chat */ |
|
9973
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
8489 | oscar_get_chat_name, /* get_chat_name */ |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8490 | oscar_chat_invite, /* chat_invite */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8491 | oscar_chat_leave, /* chat_leave */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8492 | NULL, /* chat_whisper */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8493 | oscar_send_chat, /* chat_send */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8494 | oscar_keepalive, /* keepalive */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8495 | NULL, /* register_user */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8496 | NULL, /* get_cb_info */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8497 | NULL, /* get_cb_away */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8498 | oscar_alias_buddy, /* alias_buddy */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8499 | oscar_move_buddy, /* group_buddy */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8500 | oscar_rename_group, /* rename_group */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8501 | NULL, /* buddy_free */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8502 | oscar_convo_closed, /* convo_closed */ |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
8503 | oscar_normalize, /* normalize */ |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8504 | oscar_set_icon, /* set_buddy_icon */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8505 | NULL, /* remove_group */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8506 | NULL, /* get_cb_real_name */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8507 | NULL, /* set_chat_topic */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8508 | NULL, /* find_blist_chat */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8509 | NULL, /* roomlist_get_list */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8510 | NULL, /* roomlist_cancel */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8511 | NULL, /* roomlist_expand_category */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
8512 | oscar_can_receive_file, /* can_receive_file */ |
|
12143
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
8513 | oscar_send_file, /* send_file */ |
|
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
8514 | oscar_new_xfer, /* new_xfer */ |
|
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
8515 | NULL, /* whiteboard ops */ |
|
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12088
diff
changeset
|
8516 | NULL /* media ops */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8517 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8518 | |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8519 | static GaimPluginUiInfo prefs_info = { |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8520 | get_plugin_pref_frame |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8521 | }; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8522 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8523 | static GaimPluginInfo info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8524 | { |
| 9943 | 8525 | GAIM_PLUGIN_MAGIC, |
| 8526 | GAIM_MAJOR_VERSION, | |
| 8527 | GAIM_MINOR_VERSION, | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8528 | GAIM_PLUGIN_PROTOCOL, /**< type */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8529 | NULL, /**< ui_requirement */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8530 | 0, /**< flags */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8531 | NULL, /**< dependencies */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8532 | GAIM_PRIORITY_DEFAULT, /**< priority */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8533 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8534 | "prpl-oscar", /**< id */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8535 | "AIM/ICQ", /**< name */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8536 | VERSION, /**< version */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8537 | /** summary */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8538 | N_("AIM/ICQ Protocol Plugin"), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8539 | /** description */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8540 | N_("AIM/ICQ Protocol Plugin"), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8541 | NULL, /**< author */ |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6350
diff
changeset
|
8542 | GAIM_WEBSITE, /**< homepage */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8543 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8544 | NULL, /**< load */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8545 | NULL, /**< unload */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8546 | NULL, /**< destroy */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8547 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8548 | NULL, /**< ui_info */ |
| 8993 | 8549 | &prpl_info, /**< extra_info */ |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
8550 | &prefs_info, |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
8551 | oscar_actions |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8552 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8553 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8554 | static void |
|
5920
963bfdefee02
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5917
diff
changeset
|
8555 | init_plugin(GaimPlugin *plugin) |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
8556 | { |
|
5638
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5631
diff
changeset
|
8557 | GaimAccountOption *option; |
|
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5631
diff
changeset
|
8558 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
8559 | option = gaim_account_option_string_new(_("Auth host"), "server", OSCAR_DEFAULT_LOGIN_SERVER); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
8560 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
8561 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
8562 | option = gaim_account_option_int_new(_("Auth port"), "port", OSCAR_DEFAULT_LOGIN_PORT); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
8563 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
8564 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
8565 | option = gaim_account_option_string_new(_("Encoding"), "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
8566 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11303
diff
changeset
|
8567 | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
8568 | /* Preferences */ |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8569 | gaim_prefs_add_none("/plugins/prpl/oscar"); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
8570 | gaim_prefs_add_bool("/plugins/prpl/oscar/recent_buddies", FALSE); |
|
9942
6cba898c9db1
[gaim-migrate @ 10834]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9936
diff
changeset
|
8571 | gaim_prefs_add_bool("/plugins/prpl/oscar/show_idle", FALSE); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
8572 | gaim_prefs_add_bool("/plugins/prpl/oscar/use_rv_proxy", FALSE); |
| 2086 | 8573 | } |
| 8574 | ||
|
5920
963bfdefee02
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5917
diff
changeset
|
8575 | GAIM_INIT_PLUGIN(oscar, init_plugin, info); |