src/protocols/msn/msn.c

Fri, 25 Apr 2003 06:47:33 +0000

author
Christian Hammond <chipx86@chipx86.com>
date
Fri, 25 Apr 2003 06:47:33 +0000
changeset 5205
242b8aa81328
parent 5191
a8509eec6fdb
child 5221
86a1444cc9ac
permissions
-rw-r--r--

[gaim-migrate @ 5573]
I had a damn good commit message, but it was eaten. Let's try it again.

Announcing, Gaim Plugin API version 2.0, or GPAPIV2.0 for short.

There are lots'a cool thingies here.

Okay now, this isn't as cool as the previous message, but:

1) There's now a single entry function for all plugin types. It returns a
detailed information structure on the plugin. This removes a lot of the
ugliness from old plugins. Oh yeah, libicq wasn't converted to this, so
if you use it, well, you shouldn't have used it anyway, but now you
can't! bwahahaha. Use AIM/ICQ.

2) There are now 3 types of plugins: Standard, Loader, and Protocol
plugins.

Standard plugins are, well, standard, compiled plugins.

Loader plugins load other plugins. For example, the perl support is now
a loader plugin. It loads perl scripts. In the future, we'll have
Ruby and Python loader plugins.

Protocol plugins are, well, protocol plugins... yeah...

3) Plugins have unique IDs, so they can be referred to or automatically
updated from a plugin database in the future. Neat, huh?

4) Plugins will have dependency support in the future, and can be hidden,
so if you have, say, a logging core plugin, it won't have to show up,
but then you load the GTK+ logging plugin and it'll auto-load the core
plugin. Core/UI split plugins!

5) There will eventually be custom plugin signals and RPC of some sort, for
the core/ui split plugins.

So, okay, back up .gaimrc.

I'd like to thank my parents for their support, javabsp for helping convert
a bunch of protocol plugins, and Etan for helping convert a bunch of
standard plugins.

Have fun. If you have any problems, please let me know, but you probably
won't have anything major happen. You will have to convert your plugins,
though, and I'm not guaranteeing that all perl scripts will still work.
I'll end up changing the perl script API eventually, so I know they won't
down the road. Don't worry, though. It'll be mass cool.

faceprint wants me to just commit the damn code already. So, here we go!!!

..

..

I need a massage. From a young, cute girl. Are there any young, cute girls
in the audience? IM me plz k thx.

4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
1 /**
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
2 * @file msn.c The MSN protocol plugin
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
3 *
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
4 * gaim
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
5 *
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
6 * Parts Copyright (C) 2003, Christian Hammond <chipx86@gnupdate.org>
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
7 *
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
8 * This program is free software; you can redistribute it and/or modify
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
9 * it under the terms of the GNU General Public License as published by
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
11 * (at your option) any later version.
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
12 *
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
13 * This program is distributed in the hope that it will be useful,
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
16 * GNU General Public License for more details.
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
17 *
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
18 * You should have received a copy of the GNU General Public License
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
19 * along with this program; if not, write to the Free Software
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
21 *
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
22 */
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
23 #include "msn.h"
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
24
4546
d14ad00fe294 [gaim-migrate @ 4825]
Herman Bloggs <herman@bluedigits.com>
parents: 4542
diff changeset
25 #ifdef _WIN32
d14ad00fe294 [gaim-migrate @ 4825]
Herman Bloggs <herman@bluedigits.com>
parents: 4542
diff changeset
26 #include "win32dep.h"
d14ad00fe294 [gaim-migrate @ 4825]
Herman Bloggs <herman@bluedigits.com>
parents: 4542
diff changeset
27 #endif
d14ad00fe294 [gaim-migrate @ 4825]
Herman Bloggs <herman@bluedigits.com>
parents: 4542
diff changeset
28
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
29 #define BUDDY_ALIAS_MAXLEN 388
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
30
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
31 static GaimPlugin *my_protocol = NULL;
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
32
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
33 /* for win32 compatability */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
34 G_MODULE_IMPORT GSList *connections;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
35
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
36 static void msn_login_callback(gpointer, gint, GaimInputCondition);
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
37 static void msn_login_xfr_connect(gpointer, gint, GaimInputCondition);
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
38
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
39 static char *msn_normalize(const char *s)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
40 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
41 static char buf[BUF_LEN];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
42
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
43 g_return_val_if_fail(s != NULL, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
44
3504
0dfa080632d0 [gaim-migrate @ 3568]
Sean Egan <seanegan@pidgin.im>
parents: 3493
diff changeset
45 g_snprintf(buf, sizeof(buf), "%s%s", s, strchr(s, '@') ? "" : "@hotmail.com");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
46
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
47 return buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
48 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
49
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
50 char *
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
51 handle_errcode(char *buf, gboolean show)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
52 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
53 int errcode;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
54 static char msg[MSN_BUF_LEN];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
55
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
56 buf[4] = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
57 errcode = atoi(buf);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
58
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
59 switch (errcode) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
60 case 200:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
61 g_snprintf(msg, sizeof(msg), _("Syntax Error (probably a Gaim bug)"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
62 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
63 case 201:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
64 g_snprintf(msg, sizeof(msg), _("Invalid Parameter (probably a Gaim bug)"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
65 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
66 case 205:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
67 g_snprintf(msg, sizeof(msg), _("Invalid User"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
68 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
69 case 206:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
70 g_snprintf(msg, sizeof(msg), _("Fully Qualified Domain Name missing"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
71 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
72 case 207:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
73 g_snprintf(msg, sizeof(msg), _("Already Login"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
74 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
75 case 208:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
76 g_snprintf(msg, sizeof(msg), _("Invalid Username"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
77 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
78 case 209:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
79 g_snprintf(msg, sizeof(msg), _("Invalid Friendly Name"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
80 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
81 case 210:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
82 g_snprintf(msg, sizeof(msg), _("List Full"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
83 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
84 case 215:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
85 g_snprintf(msg, sizeof(msg), _("Already there"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
86 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
87 case 216:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
88 g_snprintf(msg, sizeof(msg), _("Not on list"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
89 break;
2842
2b2eff92a48b [gaim-migrate @ 2855]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
90 case 217:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
91 g_snprintf(msg, sizeof(msg), _("User is offline"));
2842
2b2eff92a48b [gaim-migrate @ 2855]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
92 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
93 case 218:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
94 g_snprintf(msg, sizeof(msg), _("Already in the mode"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
95 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
96 case 219:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
97 g_snprintf(msg, sizeof(msg), _("Already in opposite list"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
98 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
99 case 280:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
100 g_snprintf(msg, sizeof(msg), _("Switchboard failed"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
101 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
102 case 281:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
103 g_snprintf(msg, sizeof(msg), _("Notify Transfer failed"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
104 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
105
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
106 case 300:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
107 g_snprintf(msg, sizeof(msg), _("Required fields missing"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
108 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
109 case 302:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
110 g_snprintf(msg, sizeof(msg), _("Not logged in"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
111 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
112
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
113 case 500:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
114 g_snprintf(msg, sizeof(msg), _("Internal server error"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
115 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
116 case 501:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
117 g_snprintf(msg, sizeof(msg), _("Database server error"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
118 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
119 case 510:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
120 g_snprintf(msg, sizeof(msg), _("File operation error"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
121 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
122 case 520:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
123 g_snprintf(msg, sizeof(msg), _("Memory allocation error"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
124 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
125
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
126 case 600:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
127 g_snprintf(msg, sizeof(msg), _("Server busy"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
128 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
129 case 601:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
130 g_snprintf(msg, sizeof(msg), _("Server unavailable"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
131 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
132 case 602:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
133 g_snprintf(msg, sizeof(msg), _("Peer Notification server down"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
134 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
135 case 603:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
136 g_snprintf(msg, sizeof(msg), _("Database connect error"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
137 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
138 case 604:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
139 g_snprintf(msg, sizeof(msg), _("Server is going down (abandon ship)"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
140 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
141
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
142 case 707:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
143 g_snprintf(msg, sizeof(msg), _("Error creating connection"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
144 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
145 case 711:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
146 g_snprintf(msg, sizeof(msg), _("Unable to write"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
147 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
148 case 712:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
149 g_snprintf(msg, sizeof(msg), _("Session overload"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
150 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
151 case 713:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
152 g_snprintf(msg, sizeof(msg), _("User is too active"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
153 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
154 case 714:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
155 g_snprintf(msg, sizeof(msg), _("Too many sessions"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
156 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
157 case 715:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
158 g_snprintf(msg, sizeof(msg), _("Not expected"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
159 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
160 case 717:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
161 g_snprintf(msg, sizeof(msg), _("Bad friend file"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
162 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
163
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
164 case 911:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
165 g_snprintf(msg, sizeof(msg), _("Authentication failed"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
166 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
167 case 913:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
168 g_snprintf(msg, sizeof(msg), _("Not allowed when offline"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
169 break;
3073
db068034b0bc [gaim-migrate @ 3087]
mjc
parents: 3065
diff changeset
170 case 920:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
171 g_snprintf(msg, sizeof(msg), _("Not accepting new users"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
172 break;
3073
db068034b0bc [gaim-migrate @ 3087]
mjc
parents: 3065
diff changeset
173 case 924:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
174 g_snprintf(msg, sizeof(msg), _("User unverified"));
3073
db068034b0bc [gaim-migrate @ 3087]
mjc
parents: 3065
diff changeset
175 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
176 default:
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
177 g_snprintf(msg, sizeof(msg), _("Unknown Error Code"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
178 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
179 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
180
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
181 if (show)
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3375
diff changeset
182 do_error_dialog(msg, NULL, GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
183
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
184 return msg;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
185 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
186
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
187
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
188 char *url_decode(const char *msg)
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
189 {
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
190 static char buf[MSN_BUF_LEN];
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
191 int i, j = 0;
5191
a8509eec6fdb [gaim-migrate @ 5556]
Nathan Walp <nwalp@pidgin.im>
parents: 5166
diff changeset
192 char *bum;
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
193
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
194 bzero(buf, sizeof(buf));
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
195 for (i = 0; i < strlen(msg); i++) {
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
196 char hex[3];
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
197 if (msg[i] != '%') {
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
198 buf[j++] = msg[i];
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
199 continue;
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
200 }
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
201 strncpy(hex, msg + ++i, 2); hex[2] = 0;
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
202 /* i is pointing to the start of the number */
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
203 i++; /* now it's at the end and at the start of the for loop
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
204 will be at the next character */
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
205 buf[j++] = strtol(hex, NULL, 16);
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
206 }
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
207 buf[j] = 0;
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
208
5191
a8509eec6fdb [gaim-migrate @ 5556]
Nathan Walp <nwalp@pidgin.im>
parents: 5166
diff changeset
209 if(!g_utf8_validate(buf, -1, (const char **)&bum))
a8509eec6fdb [gaim-migrate @ 5556]
Nathan Walp <nwalp@pidgin.im>
parents: 5166
diff changeset
210 *bum = '\0';
a8509eec6fdb [gaim-migrate @ 5556]
Nathan Walp <nwalp@pidgin.im>
parents: 5166
diff changeset
211
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
212 return buf;
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
213 }
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
214
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
215 static char *url_encode(const char *msg)
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
216 {
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
217 static char buf[MSN_BUF_LEN];
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
218 int i, j = 0;
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
219
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
220 bzero(buf, sizeof(buf));
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
221 for (i = 0; i < strlen(msg); i++) {
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
222 if (isalnum(msg[i]))
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
223 buf[j++] = msg[i];
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
224 else {
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
225 sprintf(buf + j, "%%%02x", (unsigned char)msg[i]);
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
226 j += 3;
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
227 }
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
228 }
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
229 buf[j] = 0;
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
230
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
231 return buf;
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
232 }
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
233
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
234 static void handle_hotmail(struct gaim_connection *gc, char *data)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
235 {
2932
63dbb93477c6 [gaim-migrate @ 2945]
Rob Flynn <gaim@robflynn.com>
parents: 2889
diff changeset
236 char login_url[2048];
3171
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
237 char buf[MSN_BUF_LEN];
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
238 struct msn_data *md = gc->proto_data;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
239
3293
e995ddbbe287 [gaim-migrate @ 3311]
Sean Egan <seanegan@pidgin.im>
parents: 3279
diff changeset
240 if (strchr(gc->username, '@') != strstr(gc->username, "@hotmail.com"))
e995ddbbe287 [gaim-migrate @ 3311]
Sean Egan <seanegan@pidgin.im>
parents: 3279
diff changeset
241 /* We can only get Hotmail notification from hotmail users */
e995ddbbe287 [gaim-migrate @ 3311]
Sean Egan <seanegan@pidgin.im>
parents: 3279
diff changeset
242 return;
e995ddbbe287 [gaim-migrate @ 3311]
Sean Egan <seanegan@pidgin.im>
parents: 3279
diff changeset
243
3195
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
244 if (!md->passport) {
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
245 g_snprintf(buf, sizeof(buf), "URL %u INBOX\r\n", ++md->trId);
2932
63dbb93477c6 [gaim-migrate @ 2945]
Rob Flynn <gaim@robflynn.com>
parents: 2889
diff changeset
246
3195
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
247 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
2153
f38e418776a7 [gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2152
diff changeset
248 return;
f38e418776a7 [gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2152
diff changeset
249 }
3195
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
250 } else {
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
251 g_snprintf(login_url, sizeof(login_url), "%s", md->passport);
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
252
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
253 if (strstr(data, "Content-Type: text/x-msmsgsinitialemailnotification;")) {
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
254 char *x = strstr(data, "Inbox-Unread:");
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
255 if (!x) return;
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
256 x += strlen("Inbox-Unread: ");
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
257 connection_has_mail(gc, atoi(x), NULL, NULL, login_url);
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
258 } else if (strstr(data, "Content-Type: text/x-msmsgsemailnotification;")) {
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
259 char *from = strstr(data, "From:");
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
260 char *subject = strstr(data, "Subject:");
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
261 char *x;
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
262 if (!from || !subject) {
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
263 connection_has_mail(gc, 1, NULL, NULL, login_url);
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
264 return;
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
265 }
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
266 from += strlen("From: ");
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
267 x = strstr(from, "\r\n"); *x = 0;
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
268 subject += strlen("Subject: ");
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
269 x = strstr(subject, "\r\n"); *x = 0;
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
270 connection_has_mail(gc, -1, from, subject, login_url);
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
271 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
272 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
273 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
274
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
275 struct msn_add_permit {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
276 struct gaim_connection *gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
277 char *user;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
278 char *friend;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
279 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
280
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3720
diff changeset
281 static void msn_accept_add(struct msn_add_permit *map)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
282 {
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
283 if(g_slist_find(connections, map->gc)) {
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
284 struct msn_data *md = map->gc->proto_data;
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
285 char buf[MSN_BUF_LEN];
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
286
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
287 g_snprintf(buf, sizeof(buf), "ADD %u AL %s %s\r\n", ++md->trId, map->user, url_encode(map->friend));
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
288
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
289 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
290 hide_login_progress(map->gc, _("Write error"));
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
291 signoff(map->gc);
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
292 return;
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
293 }
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
294 gaim_privacy_permit_add(map->gc->account, map->user);
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
295 build_allow_list(); /* er. right. we'll need to have a thing for this in CUI too */
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
296 show_got_added(map->gc, NULL, map->user, map->friend, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
297 }
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
298
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3720
diff changeset
299 g_free(map->user);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3720
diff changeset
300 g_free(map->friend);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3720
diff changeset
301 g_free(map);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
302 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
303
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3720
diff changeset
304 static void msn_cancel_add(struct msn_add_permit *map)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
305 {
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
306 if(g_slist_find(connections, map->gc)) {
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
307 struct msn_data *md = map->gc->proto_data;
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
308 char buf[MSN_BUF_LEN];
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
309
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
310 g_snprintf(buf, sizeof(buf), "ADD %u BL %s %s\r\n", ++md->trId, map->user, url_encode(map->friend));
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
311 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
312 hide_login_progress(map->gc, _("Write error"));
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
313 signoff(map->gc);
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
314 return;
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
315 }
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
316 gaim_privacy_deny_add(map->gc->account, map->user);
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
317 build_block_list();
3118
e091de6bb791 [gaim-migrate @ 3133]
Sean Egan <seanegan@pidgin.im>
parents: 3117
diff changeset
318 }
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
319
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
320 g_free(map->user);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
321 g_free(map->friend);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
322 g_free(map);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
323 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
324
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
325 static int msn_process_main(struct gaim_connection *gc, char *buf)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
326 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
327 struct msn_data *md = gc->proto_data;
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
328 char sendbuf[MSN_BUF_LEN];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
329
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
330 if (!g_ascii_strncasecmp(buf, "ADD", 3)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
331 char *list, *user, *friend, *tmp = buf;
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
332 struct msn_add_permit *ap;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
333 GSList *perm = gc->account->permit;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
334 char msg[MSN_BUF_LEN];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
335
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
336 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
337 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
338 list = tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
339
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
340 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
341 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
342 user = tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
343
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
344 GET_NEXT(tmp);
3323
3358bfc36dd3 [gaim-migrate @ 3341]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 3322
diff changeset
345 friend = url_decode(tmp);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
346
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
347 if (g_ascii_strcasecmp(list, "RL"))
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
348 return 1;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
349
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
350 while (perm) {
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
351 if (!gaim_utf8_strcasecmp(perm->data, user))
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
352 return 1;
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
353 perm = perm->next;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
354 }
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
355
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
356 ap = g_new0(struct msn_add_permit, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
357 ap->user = g_strdup(user);
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3630
diff changeset
358 ap->friend = g_strdup(friend);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
359 ap->gc = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
360
3299
d11964b52f30 [gaim-migrate @ 3317]
Sean Egan <seanegan@pidgin.im>
parents: 3296
diff changeset
361 g_snprintf(msg, sizeof(msg), _("The user %s (%s) wants to add %s to his or her buddy list."),
3323
3358bfc36dd3 [gaim-migrate @ 3341]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 3322
diff changeset
362 ap->user, ap->friend, ap->gc->username);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
363
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
364 // do_ask_dialog(msg, NULL, ap, _("Authorize"), msn_accept_add, _("Deny"), msn_cancel_add, my_protocol->handle, FALSE);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
365 } else if (!g_ascii_strncasecmp(buf, "BLP", 3)) {
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
366 char *type, *tmp = buf;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
367
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
368 GET_NEXT(tmp);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
369 GET_NEXT(tmp);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
370 GET_NEXT(tmp);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
371 type = tmp;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
372
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
373 if (!g_ascii_strcasecmp(type, "AL")) {
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
374 /* If the current setting is AL, messages
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
375 * from users who are not in BL will be delivered
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
376 *
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
377 * In other words, deny some */
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
378 gc->account->permdeny = DENY_SOME;
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
379 } else {
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
380 /* If the current
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
381 * setting is BL, only messages from people who are in the AL will be
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
382 * delivered.
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
383 *
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
384 * In other words, permit some */
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
385 gc->account->permdeny = PERMIT_SOME;
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
386 }
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
387 } else if (!g_ascii_strncasecmp(buf, "BPR", 3)) {
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
388 } else if (!g_ascii_strncasecmp(buf, "CHG", 3)) {
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
389 } else if (!g_ascii_strncasecmp(buf, "CHL", 3)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
390 char *hash = buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
391 char buf2[MSN_BUF_LEN];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
392 md5_state_t st;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
393 md5_byte_t di[16];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
394 int i;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
395
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
396 GET_NEXT(hash);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
397 GET_NEXT(hash);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
398
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
399 md5_init(&st);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
400 md5_append(&st, (const md5_byte_t *)hash, strlen(hash));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
401 md5_append(&st, (const md5_byte_t *)"Q1P7W2E4J9R8U3S5", strlen("Q1P7W2E4J9R8U3S5"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
402 md5_finish(&st, di);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
403
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
404 g_snprintf(sendbuf, sizeof(sendbuf), "QRY %u msmsgs@msnmsgr.com 32\r\n", ++md->trId);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
405 for (i = 0; i < 16; i++) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
406 g_snprintf(buf2, sizeof(buf2), "%02x", di[i]);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
407 strcat(sendbuf, buf2);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
408 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
409
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
410 if (msn_write(md->fd, sendbuf, strlen(sendbuf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
411 hide_login_progress(gc, _("Unable to write to server"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
412 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
413 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
414
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
415 debug_printf("\n");
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
416 } else if (!g_ascii_strncasecmp(buf, "FLN", 3)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
417 char *usr = buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
418
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
419 GET_NEXT(usr);
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4729
diff changeset
420 serv_got_update(gc, usr, 0, 0, 0, 0, 0);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
421 } else if (!g_ascii_strncasecmp(buf, "GTC", 3)) {
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
422 } else if (!g_ascii_strncasecmp(buf, "INF", 3)) {
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
423 } else if (!g_ascii_strncasecmp(buf, "ILN", 3)) {
2607
7bcd3ea48df3 [gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2603
diff changeset
424 char *state, *user, *friend, *tmp = buf;
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2494
diff changeset
425 int status = 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
426
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
427 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
428
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
429 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
430 state = tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
431
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
432 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
433 user = tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
434
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
435 GET_NEXT(tmp);
2607
7bcd3ea48df3 [gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2603
diff changeset
436 friend = url_decode(tmp);
7bcd3ea48df3 [gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2603
diff changeset
437
4227
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
438 serv_got_alias(gc, user, friend);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
439
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
440 if (!g_ascii_strcasecmp(state, "BSY")) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2494
diff changeset
441 status |= UC_UNAVAILABLE | (MSN_BUSY << 1);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
442 } else if (!g_ascii_strcasecmp(state, "IDL")) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2494
diff changeset
443 status |= UC_UNAVAILABLE | (MSN_IDLE << 1);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
444 } else if (!g_ascii_strcasecmp(state, "BRB")) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2494
diff changeset
445 status |= UC_UNAVAILABLE | (MSN_BRB << 1);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
446 } else if (!g_ascii_strcasecmp(state, "AWY")) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2494
diff changeset
447 status |= UC_UNAVAILABLE | (MSN_AWAY << 1);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
448 } else if (!g_ascii_strcasecmp(state, "PHN")) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2494
diff changeset
449 status |= UC_UNAVAILABLE | (MSN_PHONE << 1);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
450 } else if (!g_ascii_strcasecmp(state, "LUN")) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2494
diff changeset
451 status |= UC_UNAVAILABLE | (MSN_LUNCH << 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
452 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
453
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4729
diff changeset
454 serv_got_update(gc, user, 1, 0, 0, 0, status);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
455 } else if (!g_ascii_strncasecmp(buf, "LST", 3)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
456 char *which, *who, *friend, *tmp = buf;
3012
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
457 struct msn_add_permit *ap; /* for any as yet undealt with buddies who've added you to their buddy list when you were off-line. How dare they! */
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
458 GSList *perm = gc->account->permit; /* current permit list */
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
459 GSList *denyl = gc->account->deny;
3012
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
460 char msg[MSN_BUF_LEN];
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
461 int new = 1;
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
462 int pos, tot;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
463
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
464 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
465 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
466 which = tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
467
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
468 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
469 GET_NEXT(tmp);
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
470 pos = strtol(tmp, NULL, 10);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
471 GET_NEXT(tmp);
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
472 tot = strtol(tmp, NULL, 10);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
473 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
474 who = tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
475
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
476 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
477 friend = url_decode(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
478
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
479 if (!g_ascii_strcasecmp(which, "FL") && pos) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
480 struct msn_buddy *b = g_new0(struct msn_buddy, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
481 b->user = g_strdup(who);
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3630
diff changeset
482 b->friend = g_strdup(friend);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
483 md->fl = g_slist_append(md->fl, b);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
484 } else if (!g_ascii_strcasecmp(which, "AL") && pos) {
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
485 if (g_slist_find_custom(gc->account->deny, who,
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
486 (GCompareFunc)strcmp)) {
3294
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
487 debug_printf("moving from deny to permit: %s", who);
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
488 gaim_privacy_deny_remove(gc->account, who);
3294
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
489 }
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
490 gaim_privacy_permit_add(gc->account, who);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
491 } else if (!g_ascii_strcasecmp(which, "BL") && pos) {
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
492 gaim_privacy_deny_add(gc->account, who);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
493 } else if (!g_ascii_strcasecmp(which, "RL")) {
3121
ac411718fcd5 [gaim-migrate @ 3136]
Gerd Behrmann
parents: 3119
diff changeset
494 if (pos) {
3012
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
495 while(perm) {
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
496 if(!g_ascii_strcasecmp(perm->data, who))
3012
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
497 new = 0;
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
498 perm = perm->next;
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
499 }
3018
6ca647fb0cc7 [gaim-migrate @ 3031]
Sean Egan <seanegan@pidgin.im>
parents: 3013
diff changeset
500 while(denyl) {
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
501 if(!g_ascii_strcasecmp(denyl->data, who))
3018
6ca647fb0cc7 [gaim-migrate @ 3031]
Sean Egan <seanegan@pidgin.im>
parents: 3013
diff changeset
502 new = 0;
6ca647fb0cc7 [gaim-migrate @ 3031]
Sean Egan <seanegan@pidgin.im>
parents: 3013
diff changeset
503 denyl = denyl->next;
6ca647fb0cc7 [gaim-migrate @ 3031]
Sean Egan <seanegan@pidgin.im>
parents: 3013
diff changeset
504 }
3012
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
505 if(new) {
3013
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3012
diff changeset
506 debug_printf("Unresolved MSN RL entry\n");
3012
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
507 ap = g_new0(struct msn_add_permit, 1);
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
508 ap->user = g_strdup(who);
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3630
diff changeset
509 ap->friend = g_strdup(friend);
3012
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
510 ap->gc = gc;
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
511
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
512 g_snprintf(msg, sizeof(msg), _("The user %s (%s) wants to add you to their buddy list"),ap->user, ap->friend);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
513 do_ask_dialog(msg, NULL, ap, _("Authorize"), msn_accept_add, _("Deny"), msn_cancel_add, my_protocol->handle, FALSE);
3012
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
514 }
3121
ac411718fcd5 [gaim-migrate @ 3136]
Gerd Behrmann
parents: 3119
diff changeset
515 }
3012
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
516
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
517 if (pos != tot)
a5c5a612c253 [gaim-migrate @ 3025]
Luke Schierer <lschiere@pidgin.im>
parents: 3001
diff changeset
518 return 1; /* this isn't the last one in the RL, so return. */
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
519
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
520 g_snprintf(sendbuf, sizeof(sendbuf), "CHG %u NLN\r\n", ++md->trId);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
521 if (msn_write(md->fd, sendbuf, strlen(sendbuf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
522 hide_login_progress(gc, _("Unable to write"));
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
523 signoff(gc);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
524 return 0;
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
525 }
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
526
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
527 account_online(gc);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
528 serv_finish_login(gc);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
529
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
530 md->permit = g_slist_copy(gc->account->permit);
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
531 md->deny = g_slist_copy(gc->account->deny);
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
532
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
533 while (md->fl) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
534 struct msn_buddy *mb = md->fl->data;
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
535 struct buddy *b = gaim_find_buddy(gc->account, mb->user);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
536 md->fl = g_slist_remove(md->fl, mb);
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
537 if(!b) {
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
538 struct group *g;
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
539 printf("I'm adding %s now..\n", mb->user);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
540 if (!(g = gaim_find_group(_("Buddies")))) {
4690
e30dbd5b361f [gaim-migrate @ 5001]
Nathan Walp <nwalp@pidgin.im>
parents: 4687
diff changeset
541 printf("How could I not exitst!?!\n");
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
542 g = gaim_group_new(_("Buddies"));
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
543 gaim_blist_add_group(g, NULL);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
544 }
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
545 b = gaim_buddy_new(gc->account, mb->user, NULL);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
546 gaim_blist_add_buddy(b,g,NULL);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
547 }
4227
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
548 serv_got_alias(gc, mb->user, mb->friend);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
549 g_free(mb->user);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
550 g_free(mb->friend);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
551 g_free(mb);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
552 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
553 }
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
554 } else if (!g_ascii_strncasecmp(buf, "MSG", 3)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
555 char *user, *tmp = buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
556 int length;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
557
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
558 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
559 user = tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
560
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
561 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
562
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
563 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
564 length = atoi(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
565
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
566 md->msg = TRUE;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
567 md->msguser = g_strdup(user);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
568 md->msglen = length;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
569 } else if (!g_ascii_strncasecmp(buf, "NLN", 3)) {
2607
7bcd3ea48df3 [gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2603
diff changeset
570 char *state, *user, *friend, *tmp = buf;
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2494
diff changeset
571 int status = 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
572
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
573 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
574 state = tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
575
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
576 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
577 user = tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
578
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
579 GET_NEXT(tmp);
2607
7bcd3ea48df3 [gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2603
diff changeset
580 friend = url_decode(tmp);
7bcd3ea48df3 [gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2603
diff changeset
581
4227
5f98b16ed21c [gaim-migrate @ 4471]
Nathan Walp <nwalp@pidgin.im>
parents: 4201
diff changeset
582 serv_got_alias(gc, user, friend);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
583
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
584 if (!g_ascii_strcasecmp(state, "BSY")) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2494
diff changeset
585 status |= UC_UNAVAILABLE | (MSN_BUSY << 1);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
586 } else if (!g_ascii_strcasecmp(state, "IDL")) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2494
diff changeset
587 status |= UC_UNAVAILABLE | (MSN_IDLE << 1);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
588 } else if (!g_ascii_strcasecmp(state, "BRB")) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2494
diff changeset
589 status |= UC_UNAVAILABLE | (MSN_BRB << 1);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
590 } else if (!g_ascii_strcasecmp(state, "AWY")) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2494
diff changeset
591 status |= UC_UNAVAILABLE | (MSN_AWAY << 1);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
592 } else if (!g_ascii_strcasecmp(state, "PHN")) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2494
diff changeset
593 status |= UC_UNAVAILABLE | (MSN_PHONE << 1);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
594 } else if (!g_ascii_strcasecmp(state, "LUN")) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2494
diff changeset
595 status |= UC_UNAVAILABLE | (MSN_LUNCH << 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
596 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
597
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4729
diff changeset
598 serv_got_update(gc, user, 1, 0, 0, 0, status);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
599 } else if (!g_ascii_strncasecmp(buf, "OUT", 3)) {
2887
3f0804928c3f [gaim-migrate @ 2900]
Matt Wright
parents: 2870
diff changeset
600 char *tmp = buf;
3f0804928c3f [gaim-migrate @ 2900]
Matt Wright
parents: 2870
diff changeset
601
3f0804928c3f [gaim-migrate @ 2900]
Matt Wright
parents: 2870
diff changeset
602 GET_NEXT(tmp);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
603 if (!g_ascii_strncasecmp(tmp, "OTH", 3)) {
2889
9cf00c3b75f6 [gaim-migrate @ 2902]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2888
diff changeset
604 hide_login_progress(gc, _("You have been disconnected. You have "
9cf00c3b75f6 [gaim-migrate @ 2902]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2888
diff changeset
605 "signed on from another location."));
9cf00c3b75f6 [gaim-migrate @ 2902]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2888
diff changeset
606 signoff(gc);
9cf00c3b75f6 [gaim-migrate @ 2902]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2888
diff changeset
607 return 0;
2887
3f0804928c3f [gaim-migrate @ 2900]
Matt Wright
parents: 2870
diff changeset
608 }
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
609 } else if (!g_ascii_strncasecmp(buf, "PRP", 3)) {
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
610 } else if (!g_ascii_strncasecmp(buf, "QNG", 3)) {
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
611 } else if (!g_ascii_strncasecmp(buf, "QRY", 3)) {
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
612 } else if (!g_ascii_strncasecmp(buf, "REA", 3)) {
2213
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
613 char *friend, *tmp = buf;
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
614
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
615 GET_NEXT(tmp);
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
616 GET_NEXT(tmp);
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
617 GET_NEXT(tmp);
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
618 GET_NEXT(tmp);
3456
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3448
diff changeset
619
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3448
diff changeset
620 friend = url_decode(tmp);
2213
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
621
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
622 g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", friend);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
623 } else if (!g_ascii_strncasecmp(buf, "REM", 3)) {
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
624 } else if (!g_ascii_strncasecmp(buf, "RNG", 3)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
625 struct msn_switchboard *ms;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
626 char *sessid, *ssaddr, *auth, *user;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
627 int port, i = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
628 char *tmp = buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
629
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
630 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
631 sessid = tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
632
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
633 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
634 ssaddr = tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
635
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
636 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
637
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
638 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
639 auth = tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
640
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
641 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
642 user = tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
643 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
644
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
645 while (ssaddr[i] && ssaddr[i] != ':') i++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
646 if (ssaddr[i] == ':') {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
647 char *x = &ssaddr[i + 1];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
648 ssaddr[i] = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
649 port = atoi(x);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
650 } else
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
651 port = 1863;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
652
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
653 ms = g_new0(struct msn_switchboard, 1);
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
654 if (proxy_connect(gc->account, ssaddr, port, msn_rng_connect, ms) != 0) {
2688
f1f8c4ff8794 [gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2681
diff changeset
655 g_free(ms);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
656 return 1;
2688
f1f8c4ff8794 [gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2681
diff changeset
657 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
658 ms->user = g_strdup(user);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
659 ms->sessid = g_strdup(sessid);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
660 ms->auth = g_strdup(auth);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
661 ms->gc = gc;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
662 } else if (!g_ascii_strncasecmp(buf, "URL", 3)) {
3171
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
663 char *tmp = buf;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
664 FILE *fd;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
665 md5_state_t st;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
666 md5_byte_t di[16];
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
667 int i;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
668 char buf2[64];
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
669 char sendbuf[64];
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
670 char hippy[2048];
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
671 char *rru;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
672 char *passport;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
673
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
674 GET_NEXT(tmp);
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
675 GET_NEXT(tmp);
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
676 rru = tmp;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
677 GET_NEXT(tmp);
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
678 passport = tmp;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
679
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
680 g_snprintf(hippy, sizeof(hippy), "%s%lu%s", md->mspauth, time(NULL) - md->sl, gc->password);
3171
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
681
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
682 md5_init(&st);
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
683 md5_append(&st, (const md5_byte_t *)hippy, strlen(hippy));
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
684 md5_finish(&st, di);
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
685
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
686 bzero(sendbuf, sizeof(sendbuf));
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
687 for (i = 0; i < 16; i++) {
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
688 g_snprintf(buf2, sizeof(buf2), "%02x", di[i]);
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
689 strcat(sendbuf, buf2);
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
690 }
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
691
3195
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
692 if (md->passport) {
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
693 unlink(md->passport);
3231
340891659275 [gaim-migrate @ 3248]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3200
diff changeset
694 g_free(md->passport);
3195
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
695 }
3171
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
696
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
697 if( (fd = gaim_mkstemp(&(md->passport))) == NULL ) {
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
698 debug_printf("Error opening temp file: %s\n", strerror(errno));
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
699 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
700 else {
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
701 fputs("<html>\n"
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
702 "<head>\n"
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
703 "<noscript>\n"
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
704 "<meta http-equiv=Refresh content=\"0; url=http://www.hotmail.com\">\n"
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
705 "</noscript>\n"
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
706 "</head>\n\n", fd);
3171
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
707
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
708 fprintf(fd, "<body onload=\"document.pform.submit(); \">\n");
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
709 fprintf(fd, "<form name=\"pform\" action=\"%s\" method=\"POST\">\n\n", passport);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
710 fprintf(fd, "<input type=\"hidden\" name=\"mode\" value=\"ttl\">\n");
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
711 fprintf(fd, "<input type=\"hidden\" name=\"login\" value=\"%s\">\n", gc->username);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
712 fprintf(fd, "<input type=\"hidden\" name=\"username\" value=\"%s\">\n", gc->username);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
713 fprintf(fd, "<input type=\"hidden\" name=\"sid\" value=\"%s\">\n", md->sid);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
714 fprintf(fd, "<input type=\"hidden\" name=\"kv\" value=\"%s\">\n", md->kv);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
715 fprintf(fd, "<input type=\"hidden\" name=\"id\" value=\"2\">\n");
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
716 fprintf(fd, "<input type=\"hidden\" name=\"sl\" value=\"%ld\">\n", time(NULL) - md->sl);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
717 fprintf(fd, "<input type=\"hidden\" name=\"rru\" value=\"%s\">\n", rru);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
718 fprintf(fd, "<input type=\"hidden\" name=\"auth\" value=\"%s\">\n", md->mspauth);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
719 fprintf(fd, "<input type=\"hidden\" name=\"creds\" value=\"%s\">\n", sendbuf); // Digest me
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
720 fprintf(fd, "<input type=\"hidden\" name=\"svc\" value=\"mail\">\n");
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
721 fprintf(fd, "<input type=\"hidden\" name=\"js\" value=\"yes\">\n");
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
722 fprintf(fd, "</form></body>\n");
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
723 fprintf(fd, "</html>\n");
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
724 if (fclose(fd)) {
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
725 debug_printf("Error closing temp file: %s\n", strerror(errno));
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
726 unlink(md->passport);
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
727 g_free(md->passport);
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
728 }
4462
ece020c7c136 [gaim-migrate @ 4737]
Herman Bloggs <herman@bluedigits.com>
parents: 4460
diff changeset
729 else {
4464
b240c46d11fd [gaim-migrate @ 4739]
Christian Hammond <chipx86@chipx86.com>
parents: 4463
diff changeset
730 /*
b240c46d11fd [gaim-migrate @ 4739]
Christian Hammond <chipx86@chipx86.com>
parents: 4463
diff changeset
731 * Renaming file with .html extension, so that
b240c46d11fd [gaim-migrate @ 4739]
Christian Hammond <chipx86@chipx86.com>
parents: 4463
diff changeset
732 * win32 open_url will work.
b240c46d11fd [gaim-migrate @ 4739]
Christian Hammond <chipx86@chipx86.com>
parents: 4463
diff changeset
733 */
b240c46d11fd [gaim-migrate @ 4739]
Christian Hammond <chipx86@chipx86.com>
parents: 4463
diff changeset
734 char *tmp;
b240c46d11fd [gaim-migrate @ 4739]
Christian Hammond <chipx86@chipx86.com>
parents: 4463
diff changeset
735 if ((tmp = g_strdup_printf("%s.html", md->passport)) != NULL) {
b240c46d11fd [gaim-migrate @ 4739]
Christian Hammond <chipx86@chipx86.com>
parents: 4463
diff changeset
736 if (rename(md->passport, tmp) == 0) {
4462
ece020c7c136 [gaim-migrate @ 4737]
Herman Bloggs <herman@bluedigits.com>
parents: 4460
diff changeset
737 g_free(md->passport);
ece020c7c136 [gaim-migrate @ 4737]
Herman Bloggs <herman@bluedigits.com>
parents: 4460
diff changeset
738 md->passport = tmp;
ece020c7c136 [gaim-migrate @ 4737]
Herman Bloggs <herman@bluedigits.com>
parents: 4460
diff changeset
739 } else
ece020c7c136 [gaim-migrate @ 4737]
Herman Bloggs <herman@bluedigits.com>
parents: 4460
diff changeset
740 g_free(tmp);
ece020c7c136 [gaim-migrate @ 4737]
Herman Bloggs <herman@bluedigits.com>
parents: 4460
diff changeset
741 }
ece020c7c136 [gaim-migrate @ 4737]
Herman Bloggs <herman@bluedigits.com>
parents: 4460
diff changeset
742 }
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3592
diff changeset
743 }
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
744 } else if (!g_ascii_strncasecmp(buf, "SYN", 3)) {
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
745 } else if (!g_ascii_strncasecmp(buf, "USR", 3)) {
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
746 } else if (!g_ascii_strncasecmp(buf, "XFR", 3)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
747 char *host = strstr(buf, "SB");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
748 int port;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
749 int i = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
750 gboolean switchboard = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
751 char *tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
752
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
753 if (!host) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
754 host = strstr(buf, "NS");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
755 if (!host) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
756 hide_login_progress(gc, _("Got invalid XFR\n"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
757 signoff(gc);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
758 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
759 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
760 switchboard = FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
761 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
762
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
763 GET_NEXT(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
764 while (host[i] && host[i] != ':') i++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
765 if (host[i] == ':') {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
766 tmp = &host[i + 1];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
767 host[i] = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
768 while (isdigit(*tmp)) tmp++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
769 *tmp++ = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
770 port = atoi(&host[i + 1]);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
771 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
772 port = 1863;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
773 tmp = host;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
774 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
775 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
776
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
777 if (switchboard) {
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
778 struct msn_switchboard *ms;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
779
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
780 GET_NEXT(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
781
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
782 ms = msn_switchboard_connect(gc, host, port);
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
783
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
784 if (ms == NULL)
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
785 return 1;
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents: 4508
diff changeset
786
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
787 ms->auth = g_strdup(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
788 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
789 close(md->fd);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
790 gaim_input_remove(md->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
791 md->inpa = 0;
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
792 if (proxy_connect(gc->account, host, port, msn_login_xfr_connect, gc) != 0) {
4599
5ee5d21a5d7c [gaim-migrate @ 4884]
Matthew Smith <matthew@smigs.co.uk>
parents: 4546
diff changeset
793 hide_login_progress(gc, _("Error transferring"));
2688
f1f8c4ff8794 [gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2681
diff changeset
794 signoff(gc);
2740
66eddefd4632 [gaim-migrate @ 2753]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2739
diff changeset
795 return 0;
2688
f1f8c4ff8794 [gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2681
diff changeset
796 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
797 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
798 } else if (isdigit(*buf)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
799 handle_errcode(buf, TRUE);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
800 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
801 debug_printf("Unhandled message!\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
802 }
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
803
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
804 return 1;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
805 }
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
806
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
807 static void msn_process_main_msg(struct gaim_connection *gc, char *msg)
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
808 {
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
809 struct msn_data *md = gc->proto_data;
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3630
diff changeset
810 char *skiphead;
3171
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
811 char *content;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
812
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
813 content = strstr(msg, "Content-Type: ");
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
814
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
815 if ((content) && (!g_ascii_strncasecmp(content, "Content-Type: text/x-msmsgsprofile",
3171
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
816 strlen("Content-Type: text/x-msmsgsprofile")))) {
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
817
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
818 char *kv,*sid,*mspauth;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
819
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
820 kv = strstr(msg, "kv: ");
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
821 sid = strstr(msg, "sid: ");
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
822 mspauth = strstr(msg, "MSPAuth: ");
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
823
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
824 if (kv) {
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
825 char *tmp;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
826
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
827 kv += strlen("kv: ");
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
828 tmp = strstr(kv, "\r\n"); *tmp = 0;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
829 md->kv = g_strdup(kv);
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
830 }
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
831
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
832 if (sid) {
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
833 char *tmp;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
834
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
835 sid += strlen("sid: ");
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
836 tmp = strstr(sid, "\r\n"); *tmp = 0;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
837 md->sid = g_strdup(sid);
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
838 }
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
839
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
840 if (mspauth) {
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
841 char *tmp;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
842
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
843 mspauth += strlen("MSPAuth: ");
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
844 tmp = strstr(mspauth, "\r\n"); *tmp = 0;
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
845 md->mspauth = g_strdup(mspauth);
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
846 }
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
847
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
848 }
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
849
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
850
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
851
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
852 if (!g_ascii_strcasecmp(md->msguser, "hotmail")) {
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
853 handle_hotmail(gc, msg);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
854 return;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
855 }
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
856
3171
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
857
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
858 skiphead = strstr(msg, "\r\n\r\n");
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
859 if (!skiphead || !skiphead[4])
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
860 return;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
861 skiphead += 4;
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3630
diff changeset
862 strip_linefeed(skiphead);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
863
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3630
diff changeset
864 serv_got_im(gc, md->msguser, skiphead, 0, time(NULL), -1);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
865 }
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
866
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
867 static void msn_callback(gpointer data, gint source, GaimInputCondition cond)
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
868 {
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
869 struct gaim_connection *gc = data;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
870 struct msn_data *md = gc->proto_data;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
871 char buf[MSN_BUF_LEN];
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
872 int cont = 1;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
873 int len;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
874
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
875 len = read(md->fd, buf, sizeof(buf));
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
876 if (len <= 0) {
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
877 hide_login_progress_error(gc, _("Error reading from server"));
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
878 signoff(gc);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
879 return;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
880 }
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
881
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
882 md->rxqueue = g_realloc(md->rxqueue, len + md->rxlen);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
883 memcpy(md->rxqueue + md->rxlen, buf, len);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
884 md->rxlen += len;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
885
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
886 while (cont) {
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
887 if (!md->rxlen)
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
888 return;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
889
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
890 if (md->msg) {
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
891 char *msg;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
892 if (md->msglen > md->rxlen)
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
893 return;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
894 msg = md->rxqueue;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
895 md->rxlen -= md->msglen;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
896 if (md->rxlen) {
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
897 md->rxqueue = g_memdup(msg + md->msglen, md->rxlen);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
898 } else {
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
899 md->rxqueue = NULL;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
900 msg = g_realloc(msg, md->msglen + 1);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
901 }
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
902 msg[md->msglen] = 0;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
903 md->msglen = 0;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
904 md->msg = FALSE;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
905
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
906 msn_process_main_msg(gc, msg);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
907
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
908 g_free(md->msguser);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
909 g_free(msg);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
910 } else {
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
911 char *end = md->rxqueue;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
912 int cmdlen;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
913 char *cmd;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
914 int i = 0;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
915
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
916 while (i + 1 < md->rxlen) {
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
917 if (*end == '\r' && end[1] == '\n')
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
918 break;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
919 end++; i++;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
920 }
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
921 if (i + 1 == md->rxlen)
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
922 return;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
923
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
924 cmdlen = end - md->rxqueue + 2;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
925 cmd = md->rxqueue;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
926 md->rxlen -= cmdlen;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
927 if (md->rxlen) {
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
928 md->rxqueue = g_memdup(cmd + cmdlen, md->rxlen);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
929 } else {
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
930 md->rxqueue = NULL;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
931 cmd = g_realloc(cmd, cmdlen + 1);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
932 }
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
933 cmd[cmdlen] = 0;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
934
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
935 debug_printf("MSN S: %s", cmd);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
936 g_strchomp(cmd);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
937 cont = msn_process_main(gc, cmd);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
938
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
939 g_free(cmd);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
940 }
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
941 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
942 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
943
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
944 static void msn_login_xfr_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
945 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
946 struct gaim_connection *gc = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
947 struct msn_data *md;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
948 char buf[MSN_BUF_LEN];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
949
2210
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
950 if (!g_slist_find(connections, gc)) {
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
951 close(source);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
952 return;
2210
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
953 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
954
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
955 md = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
956
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
957 if (md->fd != source)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
958 md->fd = source;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
959
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
960 if (md->fd == -1) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
961 hide_login_progress(gc, _("Unable to connect to Notification Server"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
962 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
963 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
964 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
965
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
966 g_snprintf(buf, sizeof(buf), "VER %u MSNP5\r\n", ++md->trId);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
967 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
968 hide_login_progress(gc, _("Unable to talk to Notification Server"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
969 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
970 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
971 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
972
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
973 md->inpa = gaim_input_add(md->fd, GAIM_INPUT_READ, msn_login_callback, gc);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
974 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
975
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
976 static int msn_process_login(struct gaim_connection *gc, char *buf)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
977 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
978 struct msn_data *md = gc->proto_data;
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
979 char sendbuf[MSN_BUF_LEN];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
980
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
981 if (!g_ascii_strncasecmp(buf, "VER", 3)) {
2226
33ae7ffa5144 [gaim-migrate @ 2236]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2219
diff changeset
982 /* we got VER, check to see that MSNP5 is in the list, then send INF */
33ae7ffa5144 [gaim-migrate @ 2236]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2219
diff changeset
983 if (!strstr(buf, "MSNP5")) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
984 hide_login_progress(gc, _("Protocol not supported"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
985 signoff(gc);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
986 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
987 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
988
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
989 g_snprintf(sendbuf, sizeof(sendbuf), "INF %u\r\n", ++md->trId);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
990 if (msn_write(md->fd, sendbuf, strlen(sendbuf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
991 hide_login_progress(gc, _("Unable to request INF\n"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
992 signoff(gc);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
993 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
994 }
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
995 } else if (!g_ascii_strncasecmp(buf, "INF", 3)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
996 /* check to make sure we can use md5 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
997 if (!strstr(buf, "MD5")) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
998 hide_login_progress(gc, _("Unable to login using MD5"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
999 signoff(gc);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1000 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1001 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1002
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1003 g_snprintf(sendbuf, sizeof(sendbuf), "USR %u MD5 I %s\r\n", ++md->trId, gc->username);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1004 if (msn_write(md->fd, sendbuf, strlen(sendbuf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1005 hide_login_progress(gc, _("Unable to send USR\n"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1006 signoff(gc);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1007 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1008 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1009
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1010 set_login_progress(gc, 3, _("Requesting to send password"));
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
1011 } else if (!g_ascii_strncasecmp(buf, "USR", 3)) {
2210
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1012 char *resp, *friend, *tmp = buf;
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1013
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1014 GET_NEXT(tmp);
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1015 GET_NEXT(tmp);
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1016 resp = tmp;
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1017 GET_NEXT(tmp);
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1018 GET_NEXT(tmp);
3323
3358bfc36dd3 [gaim-migrate @ 3341]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 3322
diff changeset
1019 friend = url_decode(tmp);
2213
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1020 GET_NEXT(tmp);
2210
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1021
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1022 /* so here, we're either getting the challenge or the OK */
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
1023 if (!g_ascii_strcasecmp(resp, "OK")) {
2210
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1024 g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", friend);
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1025
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1026 g_snprintf(sendbuf, sizeof(sendbuf), "SYN %u 0\r\n", ++md->trId);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1027 if (msn_write(md->fd, sendbuf, strlen(sendbuf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1028 hide_login_progress(gc, _("Unable to write"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1029 signoff(gc);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1030 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1031 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1032
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1033 gaim_input_remove(md->inpa);
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1034 md->inpa = gaim_input_add(md->fd, GAIM_INPUT_READ, msn_callback, gc);
2739
7300588a3544 [gaim-migrate @ 2752]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2738
diff changeset
1035 return 0;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
1036 } else if (!g_ascii_strcasecmp(resp, "MD5")) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1037 char buf2[MSN_BUF_LEN];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1038 md5_state_t st;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1039 md5_byte_t di[16];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1040 int i;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1041
2213
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1042 g_snprintf(buf2, sizeof(buf2), "%s%s", friend, gc->password);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1043
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1044 md5_init(&st);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1045 md5_append(&st, (const md5_byte_t *)buf2, strlen(buf2));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1046 md5_finish(&st, di);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1047
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1048 g_snprintf(sendbuf, sizeof(sendbuf), "USR %u MD5 S ", ++md->trId);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1049 for (i = 0; i < 16; i++) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1050 g_snprintf(buf2, sizeof(buf2), "%02x", di[i]);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1051 strcat(sendbuf, buf2);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1052 }
3321
1e9683bfdf19 [gaim-migrate @ 3339]
Adam Fritzler <mid@auk.cx>
parents: 3299
diff changeset
1053 strcat(sendbuf, "\r\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1054
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1055 if (msn_write(md->fd, sendbuf, strlen(sendbuf)) < 0) {
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1056 hide_login_progress(gc, _("Unable to send password"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1057 signoff(gc);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1058 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1059 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1060
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1061 set_login_progress(gc, 4, _("Password sent"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1062 }
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
1063 } else if (!g_ascii_strncasecmp(buf, "XFR", 3)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1064 char *host = strstr(buf, "NS");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1065 int port;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1066 int i = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1067
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1068 if (!host) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1069 hide_login_progress(gc, _("Got invalid XFR\n"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1070 signoff(gc);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1071 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1072 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1073
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1074 GET_NEXT(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1075 while (host[i] && host[i] != ':') i++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1076 if (host[i] == ':') {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1077 char *x = &host[i + 1];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1078 host[i] = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1079 port = atoi(x);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1080 } else
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1081 port = 1863;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1082
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1083 close(md->fd);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1084 gaim_input_remove(md->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1085 md->inpa = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1086 md->fd = 0;
3171
51b439b09c0a [gaim-migrate @ 3187]
Rob Flynn <gaim@robflynn.com>
parents: 3170
diff changeset
1087 md->sl = time(NULL);
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
1088 if (proxy_connect(gc->account, host, port, msn_login_xfr_connect, gc) != 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1089 hide_login_progress(gc, _("Unable to transfer"));
2688
f1f8c4ff8794 [gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2681
diff changeset
1090 signoff(gc);
f1f8c4ff8794 [gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2681
diff changeset
1091 }
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1092 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1093 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1094 if (isdigit(*buf))
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1095 hide_login_progress(gc, handle_errcode(buf, FALSE));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1096 else
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1097 hide_login_progress(gc, _("Unable to parse message"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1098 signoff(gc);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1099 return 0;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1100 }
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1101
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1102 return 1;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1103 }
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1104
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1105 static void msn_login_callback(gpointer data, gint source, GaimInputCondition cond)
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1106 {
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1107 struct gaim_connection *gc = data;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1108 struct msn_data *md = gc->proto_data;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1109 char buf[MSN_BUF_LEN];
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1110 int cont = 1;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1111 int len;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1112
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1113 len = read(md->fd, buf, sizeof(buf));
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1114 if (len <= 0) {
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1115 hide_login_progress(gc, _("Error reading from server"));
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1116 signoff(gc);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1117 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1118 }
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1119
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1120 md->rxqueue = g_realloc(md->rxqueue, len + md->rxlen);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1121 memcpy(md->rxqueue + md->rxlen, buf, len);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1122 md->rxlen += len;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1123
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1124 while (cont) {
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1125 char *end = md->rxqueue;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1126 int cmdlen;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1127 char *cmd;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1128 int i = 0;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1129
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1130 if (!md->rxlen)
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1131 return;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1132
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1133 while (i + 1 < md->rxlen) {
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1134 if (*end == '\r' && end[1] == '\n')
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1135 break;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1136 end++; i++;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1137 }
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1138 if (i + 1 == md->rxlen)
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1139 return;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1140
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1141 cmdlen = end - md->rxqueue + 2;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1142 cmd = md->rxqueue;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1143 md->rxlen -= cmdlen;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1144 if (md->rxlen) {
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1145 md->rxqueue = g_memdup(cmd + cmdlen, md->rxlen);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1146 } else {
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1147 md->rxqueue = NULL;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1148 cmd = g_realloc(cmd, cmdlen + 1);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1149 }
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1150 cmd[cmdlen] = 0;
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1151
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1152 debug_printf("MSN S: %s", cmd);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1153 g_strchomp(cmd);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1154 cont = msn_process_login(gc, cmd);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1155
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1156 g_free(cmd);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1157 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1158 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1159
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1160 static void msn_login_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1161 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1162 struct gaim_connection *gc = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1163 struct msn_data *md;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1164 char buf[1024];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1165
2210
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1166 if (!g_slist_find(connections, gc)) {
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1167 close(source);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1168 return;
2210
37d4364497f5 [gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1169 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1170
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1171 md = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1172
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1173 if (md->fd != source)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1174 md->fd = source;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1175
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1176 if (md->fd == -1) {
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1177 hide_login_progress(gc, _("Unable to connect"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1178 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1179 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1180 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1181
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1182 g_snprintf(buf, sizeof(buf), "VER %u MSNP5\r\n", ++md->trId);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1183 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1184 hide_login_progress(gc, _("Unable to write to server"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1185 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1186 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1187 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1188
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1189 md->inpa = gaim_input_add(md->fd, GAIM_INPUT_READ, msn_login_callback, gc);
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1190 set_login_progress(gc, 2,_("Synching with server"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1191 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1192
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1193 static void msn_login(struct gaim_account *account)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1194 {
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1195 struct gaim_connection *gc = new_gaim_conn(account);
4460
23d03b29e3de [gaim-migrate @ 4735]
Nathan Walp <nwalp@pidgin.im>
parents: 4459
diff changeset
1196 gc->proto_data = g_new0(struct msn_data, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1197
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1198 set_login_progress(gc, 1, _("Connecting"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1199
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1200 g_snprintf(gc->username, sizeof(gc->username), "%s", msn_normalize(gc->username));
4455
f09f1124abc8 [gaim-migrate @ 4730]
Nathan Walp <nwalp@pidgin.im>
parents: 4452
diff changeset
1201
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
1202 if (proxy_connect(account, account->proto_opt[USEROPT_MSNSERVER][0] ?
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1203 account->proto_opt[USEROPT_MSNSERVER] : MSN_SERVER,
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1204 account->proto_opt[USEROPT_MSNPORT][0] ?
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1205 atoi(account->proto_opt[USEROPT_MSNPORT]) : MSN_PORT,
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1206 msn_login_connect, gc) != 0) {
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1207 hide_login_progress(gc, _("Unable to connect"));
2688
f1f8c4ff8794 [gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2681
diff changeset
1208 signoff(gc);
f1f8c4ff8794 [gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2681
diff changeset
1209 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1210 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1211
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1212 static void msn_close(struct gaim_connection *gc)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1213 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1214 struct msn_data *md = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1215 close(md->fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1216 if (md->inpa)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1217 gaim_input_remove(md->inpa);
2738
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1218 g_free(md->rxqueue);
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1219 if (md->msg)
bd5bcb1c8167 [gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2688
diff changeset
1220 g_free(md->msguser);
3195
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
1221 if (md->passport) {
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
1222 unlink(md->passport);
3231
340891659275 [gaim-migrate @ 3248]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3200
diff changeset
1223 g_free(md->passport);
3195
e37334719acd [gaim-migrate @ 3212]
Sean Egan <seanegan@pidgin.im>
parents: 3175
diff changeset
1224 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1225 while (md->switches)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1226 msn_kill_switch(md->switches->data);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1227 while (md->fl) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1228 struct msn_buddy *tmp = md->fl->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1229 md->fl = g_slist_remove(md->fl, tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1230 g_free(tmp->user);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1231 g_free(tmp->friend);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1232 g_free(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1233 }
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1234 g_slist_free(md->permit);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1235 g_slist_free(md->deny);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1236 g_free(md);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1237 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1238
3001
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
1239 static int msn_send_typing(struct gaim_connection *gc, char *who, int typing) {
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2970
diff changeset
1240 struct msn_switchboard *ms = msn_find_switch(gc, who);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2970
diff changeset
1241 char header[MSN_BUF_LEN] = "MIME-Version: 1.0\r\n"
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2970
diff changeset
1242 "Content-Type: text/x-msmsgscontrol\r\n"
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2970
diff changeset
1243 "TypingUser: ";
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2970
diff changeset
1244 char buf [MSN_BUF_LEN];
3001
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
1245 if (!ms || !typing)
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
1246 return 0;
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1247 g_snprintf(buf, sizeof(buf), "MSG %u N %d\r\n%s%s\r\n\r\n\r\n",
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2970
diff changeset
1248 ++ms->trId,
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2970
diff changeset
1249 strlen(header) + strlen("\r\n\r\n\r\n") + strlen(gc->username),
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2970
diff changeset
1250 header, gc->username);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2970
diff changeset
1251 if (msn_write(ms->fd, buf, strlen(buf)) < 0)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2970
diff changeset
1252 msn_kill_switch(ms);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2970
diff changeset
1253 return MSN_TYPING_SEND_TIMEOUT;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2970
diff changeset
1254 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2970
diff changeset
1255
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5068
diff changeset
1256 static int msn_send_im(struct gaim_connection *gc, const char *who, const char *message, int len, int flags)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1257 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1258 struct msn_data *md = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1259 struct msn_switchboard *ms = msn_find_switch(gc, who);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1260 char buf[MSN_BUF_LEN];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1261
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1262 if (ms) {
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3630
diff changeset
1263 char *send;
2591
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1264
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1265 if (ms->txqueue) {
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1266 debug_printf("appending to queue\n");
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1267 ms->txqueue = g_slist_append(ms->txqueue, g_strdup(message));
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1268 return 1;
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1269 }
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1270
2603
0c39616168c9 [gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2600
diff changeset
1271 send = add_cr(message);
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1272 g_snprintf(buf, sizeof(buf), "MSG %u N %d\r\n%s%s", ++ms->trId,
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3630
diff changeset
1273 strlen(MIME_HEADER) + strlen(send),
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3630
diff changeset
1274 MIME_HEADER, send);
2603
0c39616168c9 [gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2600
diff changeset
1275 g_free(send);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1276 if (msn_write(ms->fd, buf, strlen(buf)) < 0)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1277 msn_kill_switch(ms);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1278 debug_printf("\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1279 } else if (strcmp(who, gc->username)) {
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1280 g_snprintf(buf, MSN_BUF_LEN, "XFR %u SB\r\n", ++md->trId);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1281 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1282 hide_login_progress(gc, _("Write error"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1283 signoff(gc);
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2273
diff changeset
1284 return 1;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1285 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1286
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1287 ms = g_new0(struct msn_switchboard, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1288 md->switches = g_slist_append(md->switches, ms);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1289 ms->user = g_strdup(who);
2591
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1290 ms->txqueue = g_slist_append(ms->txqueue, g_strdup(message));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1291 ms->gc = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1292 ms->fd = -1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1293 } else
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1294 /* in msn you can't send messages to yourself, so we'll fake like we received it ;) */
2856
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2842
diff changeset
1295 serv_got_im(gc, who, message, flags | IM_FLAG_GAIMUSER, time(NULL), -1);
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2273
diff changeset
1296 return 1;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1297 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1298
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
1299 static int msn_chat_send(struct gaim_connection *gc, int id, char *message)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1300 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1301 struct msn_switchboard *ms = msn_find_switch_by_id(gc, id);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1302 char buf[MSN_BUF_LEN];
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3630
diff changeset
1303 char *send;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1304
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1305 if (!ms)
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
1306 return -EINVAL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1307
2603
0c39616168c9 [gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2600
diff changeset
1308 send = add_cr(message);
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1309 g_snprintf(buf, sizeof(buf), "MSG %u N %d\r\n%s%s", ++ms->trId,
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3630
diff changeset
1310 strlen(MIME_HEADER) + strlen(send),
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3630
diff changeset
1311 MIME_HEADER, send);
2603
0c39616168c9 [gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2600
diff changeset
1312 g_free(send);
2591
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1313 if (msn_write(ms->fd, buf, strlen(buf)) < 0) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1314 msn_kill_switch(ms);
2591
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1315 return 0;
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1316 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1317 debug_printf("\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1318 serv_got_chat_in(gc, id, gc->username, 0, message, time(NULL));
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
1319 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1320 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1321
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3456
diff changeset
1322 static void msn_chat_invite(struct gaim_connection *gc, int id, const char *msg, const char *who)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1323 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1324 struct msn_switchboard *ms = msn_find_switch_by_id(gc, id);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1325 char buf[MSN_BUF_LEN];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1326
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1327 if (!ms)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1328 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1329
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1330 g_snprintf(buf, sizeof(buf), "CAL %u %s\r\n", ++ms->trId, who);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1331 if (msn_write(ms->fd, buf, strlen(buf)) < 0)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1332 msn_kill_switch(ms);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1333 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1334
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1335 static void msn_chat_leave(struct gaim_connection *gc, int id)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1336 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1337 struct msn_switchboard *ms = msn_find_switch_by_id(gc, id);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1338 char buf[MSN_BUF_LEN];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1339
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1340 if (!ms)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1341 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1342
2603
0c39616168c9 [gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2600
diff changeset
1343 g_snprintf(buf, sizeof(buf), "OUT\r\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1344 if (msn_write(ms->fd, buf, strlen(buf)) < 0)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1345 msn_kill_switch(ms);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1346 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1347
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2494
diff changeset
1348 static GList *msn_away_states(struct gaim_connection *gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1349 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1350 GList *m = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1351
3263
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1352 m = g_list_append(m, _("Available"));
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1353 m = g_list_append(m, _("Away From Computer"));
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1354 m = g_list_append(m, _("Be Right Back"));
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1355 m = g_list_append(m, _("Busy"));
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1356 m = g_list_append(m, _("On The Phone"));
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1357 m = g_list_append(m, _("Out To Lunch"));
a69653fcc201 [gaim-migrate @ 3281]
Rob Flynn <gaim@robflynn.com>
parents: 3231
diff changeset
1358 m = g_list_append(m, _("Hidden"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1359
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1360 return m;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1361 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1362
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1363 static void msn_set_away(struct gaim_connection *gc, char *state, char *msg)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1364 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1365 struct msn_data *md = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1366 char buf[MSN_BUF_LEN];
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1367 const char *away;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1368
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4069
diff changeset
1369 if (gc->away) {
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4069
diff changeset
1370 g_free(gc->away);
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4069
diff changeset
1371 gc->away = NULL;
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4069
diff changeset
1372 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1373
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1374 if (msg) {
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4069
diff changeset
1375 gc->away = g_strdup("");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1376 away = "AWY";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1377 } else if (state) {
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4069
diff changeset
1378 gc->away = g_strdup("");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1379
3538
5aaab80dd2a0 [gaim-migrate @ 3612]
Luke Schierer <lschiere@pidgin.im>
parents: 3504
diff changeset
1380 if (!strcmp(state, _("Away From Computer")))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1381 away = "AWY";
3538
5aaab80dd2a0 [gaim-migrate @ 3612]
Luke Schierer <lschiere@pidgin.im>
parents: 3504
diff changeset
1382 else if (!strcmp(state, _("Be Right Back")))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1383 away = "BRB";
3538
5aaab80dd2a0 [gaim-migrate @ 3612]
Luke Schierer <lschiere@pidgin.im>
parents: 3504
diff changeset
1384 else if (!strcmp(state, _("Busy")))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1385 away = "BSY";
3538
5aaab80dd2a0 [gaim-migrate @ 3612]
Luke Schierer <lschiere@pidgin.im>
parents: 3504
diff changeset
1386 else if (!strcmp(state, _("On The Phone")))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1387 away = "PHN";
3538
5aaab80dd2a0 [gaim-migrate @ 3612]
Luke Schierer <lschiere@pidgin.im>
parents: 3504
diff changeset
1388 else if (!strcmp(state, _("Out To Lunch")))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1389 away = "LUN";
3538
5aaab80dd2a0 [gaim-migrate @ 3612]
Luke Schierer <lschiere@pidgin.im>
parents: 3504
diff changeset
1390 else if (!strcmp(state, _("Hidden")))
2152
e627966d7d81 [gaim-migrate @ 2162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2123
diff changeset
1391 away = "HDN";
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1392 else {
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4069
diff changeset
1393 g_free(gc->away);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1394 gc->away = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1395 away = "NLN";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1396 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1397 } else if (gc->is_idle)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1398 away = "IDL";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1399 else
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1400 away = "NLN";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1401
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1402 g_snprintf(buf, sizeof(buf), "CHG %u %s\r\n", ++md->trId, away);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1403 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1404 hide_login_progress(gc, _("Write error"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1405 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1406 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1407 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1408 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1409
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1410 static void msn_set_idle(struct gaim_connection *gc, int idle)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1411 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1412 struct msn_data *md = gc->proto_data;
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1413 char buf[64];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1414
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1415 if (gc->away)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1416 return;
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1417 g_snprintf(buf, sizeof(buf),
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1418 idle ? "CHG %d IDL\r\n" : "CHG %u NLN\r\n", ++md->trId);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1419 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1420 hide_login_progress(gc, _("Write error"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1421 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1422 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1423 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1424 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1425
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
1426 static const char *msn_list_icon(struct gaim_account *a, struct buddy *b)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1427 {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
1428 return "msn";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
1429 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4793
diff changeset
1430
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4793
diff changeset
1431 static void msn_list_emblems(struct buddy *b, char **se, char **sw, char **nw, char **ne)
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4793
diff changeset
1432 {
5068
0d4c4df65dd0 [gaim-migrate @ 5419]
Nathan Walp <nwalp@pidgin.im>
parents: 5022
diff changeset
1433 if (b->present == GAIM_BUDDY_OFFLINE)
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4793
diff changeset
1434 *se = "offline";
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4793
diff changeset
1435 else if (b->uc >> 1 == 2 || b->uc >> 1 == 6)
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4793
diff changeset
1436 *se = "occupied";
5022
74761823f580 [gaim-migrate @ 5358]
Sean Egan <seanegan@pidgin.im>
parents: 4966
diff changeset
1437 else if (b->uc)
74761823f580 [gaim-migrate @ 5358]
Sean Egan <seanegan@pidgin.im>
parents: 4966
diff changeset
1438 *se = "away";
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1439 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4793
diff changeset
1440
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1441 static char *msn_get_away_text(int s)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1442 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1443 switch (s) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1444 case MSN_BUSY :
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1445 return _("Busy");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1446 case MSN_BRB :
4606
82c33fac5704 [gaim-migrate @ 4894]
Matthew Smith <matthew@smigs.co.uk>
parents: 4599
diff changeset
1447 return _("Be Right Back");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1448 case MSN_AWAY :
4606
82c33fac5704 [gaim-migrate @ 4894]
Matthew Smith <matthew@smigs.co.uk>
parents: 4599
diff changeset
1449 return _("Away From Computer");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1450 case MSN_PHONE :
4606
82c33fac5704 [gaim-migrate @ 4894]
Matthew Smith <matthew@smigs.co.uk>
parents: 4599
diff changeset
1451 return _("On The Phone");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1452 case MSN_LUNCH :
4606
82c33fac5704 [gaim-migrate @ 4894]
Matthew Smith <matthew@smigs.co.uk>
parents: 4599
diff changeset
1453 return _("Out To Lunch");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1454 case MSN_IDLE :
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1455 return _("Idle");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1456 default:
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1457 return _("Available");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1458 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1459 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1460
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4729
diff changeset
1461 static char *msn_status_text(struct buddy *b) {
4723
cb4ba81fe4cc [gaim-migrate @ 5035]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
1462 if (b->uc & UC_UNAVAILABLE)
4745
24867c379d37 [gaim-migrate @ 5060]
Nathan Walp <nwalp@pidgin.im>
parents: 4732
diff changeset
1463 return g_strdup(msn_get_away_text(b->uc >> 1));
4723
cb4ba81fe4cc [gaim-migrate @ 5035]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
1464 return NULL;
cb4ba81fe4cc [gaim-migrate @ 5035]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
1465 }
4150
fd30caf1a296 [gaim-migrate @ 4369]
Rob Flynn <gaim@robflynn.com>
parents: 4115
diff changeset
1466
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4729
diff changeset
1467 static char *msn_tooltip_text(struct buddy *b) {
5068
0d4c4df65dd0 [gaim-migrate @ 5419]
Nathan Walp <nwalp@pidgin.im>
parents: 5022
diff changeset
1468 if (GAIM_BUDDY_IS_ONLINE(b))
4920
d7edab317c00 [gaim-migrate @ 5254]
Chris Jones
parents: 4916
diff changeset
1469 return g_strdup_printf(_("<b>Status:</b> %s"), msn_get_away_text(b->uc >> 1));
4921
3021bf6fa84e [gaim-migrate @ 5255]
Nathan Walp <nwalp@pidgin.im>
parents: 4920
diff changeset
1470
3021bf6fa84e [gaim-migrate @ 5255]
Nathan Walp <nwalp@pidgin.im>
parents: 4920
diff changeset
1471 return NULL;
4724
2c7fae3847c8 [gaim-migrate @ 5037]
Sean Egan <seanegan@pidgin.im>
parents: 4723
diff changeset
1472 }
2c7fae3847c8 [gaim-migrate @ 5037]
Sean Egan <seanegan@pidgin.im>
parents: 4723
diff changeset
1473
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5068
diff changeset
1474 static GList *msn_buddy_menu(struct gaim_connection *gc, const char *who)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1475 {
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2169
diff changeset
1476 GList *m = NULL;
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2169
diff changeset
1477
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2169
diff changeset
1478 return m;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1479 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1480
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3456
diff changeset
1481 static void msn_add_buddy(struct gaim_connection *gc, const char *name)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1482 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1483 struct msn_data *md = gc->proto_data;
2588
4456409e8343 [gaim-migrate @ 2601]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2582
diff changeset
1484 char *who = msn_normalize(name);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1485 char buf[MSN_BUF_LEN];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1486 GSList *l = md->fl;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1487
2600
4319d341eaaf [gaim-migrate @ 2613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2597
diff changeset
1488 if (who[0] == '@')
4319d341eaaf [gaim-migrate @ 2613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2597
diff changeset
1489 /* how did this happen? */
4319d341eaaf [gaim-migrate @ 2613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2597
diff changeset
1490 return;
4319d341eaaf [gaim-migrate @ 2613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2597
diff changeset
1491
2953
d789d9d82ffc [gaim-migrate @ 2966]
Rob Flynn <gaim@robflynn.com>
parents: 2952
diff changeset
1492 if (strchr(who, ' '))
2952
9bfb2b531acd [gaim-migrate @ 2965]
Rob Flynn <gaim@robflynn.com>
parents: 2932
diff changeset
1493 /* This is a broken blist entry. */
9bfb2b531acd [gaim-migrate @ 2965]
Rob Flynn <gaim@robflynn.com>
parents: 2932
diff changeset
1494 return;
9bfb2b531acd [gaim-migrate @ 2965]
Rob Flynn <gaim@robflynn.com>
parents: 2932
diff changeset
1495
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1496 while (l) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1497 struct msn_buddy *b = l->data;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4745
diff changeset
1498 if (!gaim_utf8_strcasecmp(who, b->user))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1499 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1500 l = l->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1501 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1502 if (l)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1503 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1504
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1505 g_snprintf(buf, sizeof(buf), "ADD %u FL %s %s\r\n", ++md->trId, who, who);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1506 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1507 hide_login_progress(gc, _("Write error"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1508 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1509 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1510 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1511 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1512
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2665
diff changeset
1513 static void msn_rem_buddy(struct gaim_connection *gc, char *who, char *group)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1514 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1515 struct msn_data *md = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1516 char buf[MSN_BUF_LEN];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1517
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1518 g_snprintf(buf, sizeof(buf), "REM %u FL %s\r\n", ++md->trId, who);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1519 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1520 hide_login_progress(gc, _("Write error"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1521 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1522 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1523 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1524 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1525
2213
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1526 static void msn_act_id(gpointer data, char *entry)
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1527 {
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1528 struct gaim_connection *gc = data;
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1529 struct msn_data *md = gc->proto_data;
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1530 char buf[MSN_BUF_LEN];
3323
3358bfc36dd3 [gaim-migrate @ 3341]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 3322
diff changeset
1531 char *alias;
2213
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1532
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3456
diff changeset
1533 if (!entry || *entry == '\0')
3448
883657b48a26 [gaim-migrate @ 3490]
Sean Egan <seanegan@pidgin.im>
parents: 3447
diff changeset
1534 alias = g_strdup("");
883657b48a26 [gaim-migrate @ 3490]
Sean Egan <seanegan@pidgin.im>
parents: 3447
diff changeset
1535 else
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3630
diff changeset
1536 alias = g_strdup(entry);
3323
3358bfc36dd3 [gaim-migrate @ 3341]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 3322
diff changeset
1537
3358bfc36dd3 [gaim-migrate @ 3341]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 3322
diff changeset
1538 if (strlen(alias) >= BUDDY_ALIAS_MAXLEN) {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3375
diff changeset
1539 do_error_dialog(_("New MSN friendly name too long."), NULL, GAIM_ERROR);
3020
121e08802117 [gaim-migrate @ 3033]
Sean Egan <seanegan@pidgin.im>
parents: 3018
diff changeset
1540 return;
121e08802117 [gaim-migrate @ 3033]
Sean Egan <seanegan@pidgin.im>
parents: 3018
diff changeset
1541 }
121e08802117 [gaim-migrate @ 3033]
Sean Egan <seanegan@pidgin.im>
parents: 3018
diff changeset
1542
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1543 g_snprintf(buf, sizeof(buf), "REA %u %s %s\r\n", ++md->trId, gc->username, url_encode(alias));
3323
3358bfc36dd3 [gaim-migrate @ 3341]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 3322
diff changeset
1544 g_free(alias);
2213
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1545 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1546 hide_login_progress(gc, _("Write error"));
2213
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1547 signoff(gc);
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1548 return;
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1549 }
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1550 }
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1551
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4321
diff changeset
1552 static void msn_show_set_friendly_name(struct gaim_connection *gc)
2213
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1553 {
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4321
diff changeset
1554 do_prompt_dialog(_("Set Friendly Name:"), gc->displayname, gc, msn_act_id, NULL);
2213
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1555 }
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1556
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4321
diff changeset
1557 static GList *msn_actions(struct gaim_connection *gc)
2213
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1558 {
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1559 GList *m = NULL;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4321
diff changeset
1560 struct proto_actions_menu *pam;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4321
diff changeset
1561
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4321
diff changeset
1562 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4321
diff changeset
1563 pam->label = _("Set Friendly Name");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4321
diff changeset
1564 pam->callback = msn_show_set_friendly_name;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4321
diff changeset
1565 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4321
diff changeset
1566 m = g_list_append(m, pam);
2213
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1567
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1568 return m;
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1569 }
3a176de28de1 [gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2210
diff changeset
1570
2591
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1571 static void msn_convo_closed(struct gaim_connection *gc, char *who)
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1572 {
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1573 struct msn_switchboard *ms = msn_find_switch(gc, who);
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1574
4069
ddddcff3183d [gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents: 4068
diff changeset
1575 if (ms) {
ddddcff3183d [gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents: 4068
diff changeset
1576 char sendbuf[256];
ddddcff3183d [gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents: 4068
diff changeset
1577
ddddcff3183d [gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents: 4068
diff changeset
1578 g_snprintf(sendbuf, sizeof(sendbuf), "BYE %s\r\n", gc->username);
ddddcff3183d [gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents: 4068
diff changeset
1579
ddddcff3183d [gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents: 4068
diff changeset
1580 msn_write(ms->fd, sendbuf, strlen(sendbuf));
ddddcff3183d [gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents: 4068
diff changeset
1581
2591
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1582 msn_kill_switch(ms);
4069
ddddcff3183d [gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents: 4068
diff changeset
1583 }
2591
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1584 }
b3a239d80606 [gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2588
diff changeset
1585
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1586 static void msn_keepalive(struct gaim_connection *gc)
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1587 {
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1588 struct msn_data *md = gc->proto_data;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1589 char buf[MSN_BUF_LEN];
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1590
2603
0c39616168c9 [gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2600
diff changeset
1591 g_snprintf(buf, sizeof(buf), "PNG\r\n");
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1592 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1593 hide_login_progress(gc, _("Write error"));
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1594 signoff(gc);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1595 return;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1596 }
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1597 }
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1598
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1599 static void msn_set_permit_deny(struct gaim_connection *gc)
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1600 {
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1601 struct msn_data *md = gc->proto_data;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1602 char buf[MSN_BUF_LEN];
2665
966d8e2b5017 [gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2611
diff changeset
1603 GSList *s, *t = NULL;
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1604
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1605 if (gc->account->permdeny == PERMIT_ALL || gc->account->permdeny == DENY_SOME)
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1606 g_snprintf(buf, sizeof(buf), "BLP %u AL\r\n", ++md->trId);
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1607 else
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1608 g_snprintf(buf, sizeof(buf), "BLP %u BL\r\n", ++md->trId);
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1609
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1610 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1611 hide_login_progress(gc, _("Write error"));
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1612 signoff(gc);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1613 return;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1614 }
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1615
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1616 /* this is safe because we'll always come here after we've gotten the list off the server,
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1617 * and data is never removed. So if the lengths are equal we don't know about anyone locally
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1618 * and so there's no sense in going through them all. */
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1619 if (g_slist_length(gc->account->permit) == g_slist_length(md->permit)) {
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1620 g_slist_free(md->permit);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1621 md->permit = NULL;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1622 }
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1623 if (g_slist_length(gc->account->deny) == g_slist_length(md->deny)) {
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1624 g_slist_free(md->deny);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1625 md->deny = NULL;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1626 }
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1627 if (!md->permit && !md->deny)
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1628 return;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1629
3200
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1630 if (md->permit) {
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1631 s = g_slist_nth(gc->account->permit, g_slist_length(md->permit));
3200
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1632 while (s) {
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1633 char *who = s->data;
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1634 s = s->next;
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1635 if (!strchr(who, '@')) {
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1636 t = g_slist_append(t, who);
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1637 continue;
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1638 }
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
1639 if (g_slist_find(md->deny, who)) {
3294
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1640 t = g_slist_append(t, who);
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1641 continue;
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1642 }
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1643 g_snprintf(buf, sizeof(buf), "ADD %u AL %s %s\r\n", ++md->trId, who, who);
3200
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1644 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1645 hide_login_progress(gc, _("Write error"));
3200
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1646 signoff(gc);
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1647 return;
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1648 }
2665
966d8e2b5017 [gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2611
diff changeset
1649 }
3200
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1650 while (t) {
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1651 gaim_privacy_permit_remove(gc->account, t->data);
3200
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1652 t = t->next;
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1653 }
3200
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1654 if (t)
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1655 g_slist_free(t);
2665
966d8e2b5017 [gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2611
diff changeset
1656 t = NULL;
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1657 g_slist_free(md->permit);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1658 md->permit = NULL;
3200
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1659 }
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1660
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1661 if (md->deny) {
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1662 s = g_slist_nth(gc->account->deny, g_slist_length(md->deny));
3200
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1663 while (s) {
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1664 char *who = s->data;
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1665 s = s->next;
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1666 if (!strchr(who, '@')) {
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1667 t = g_slist_append(t, who);
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1668 continue;
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1669 }
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
1670 if (g_slist_find(md->deny, who)) {
3294
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1671 t = g_slist_append(t, who);
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1672 continue;
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1673 }
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1674 g_snprintf(buf, sizeof(buf), "ADD %u BL %s %s\r\n", ++md->trId, who, who);
3200
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1675 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1676 hide_login_progress(gc, _("Write error"));
3200
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1677 signoff(gc);
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1678 return;
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1679 }
2665
966d8e2b5017 [gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2611
diff changeset
1680 }
3200
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1681 while (t) {
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1682 gaim_privacy_deny_remove(gc->account, t->data);
3200
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1683 t = t->next;
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1684 }
3200
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1685 if (t)
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1686 g_slist_free(t);
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1687 g_slist_free(md->deny);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1688 md->deny = NULL;
3200
af4d970fd9cd [gaim-migrate @ 3217]
Sean Egan <seanegan@pidgin.im>
parents: 3195
diff changeset
1689 }
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1690 }
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1691
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
1692 static void msn_add_permit(struct gaim_connection *gc, const char *who)
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1693 {
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1694 struct msn_data *md = gc->proto_data;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1695 char buf[MSN_BUF_LEN];
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1696
2665
966d8e2b5017 [gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2611
diff changeset
1697 if (!strchr(who, '@')) {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3375
diff changeset
1698 g_snprintf(buf, sizeof(buf),
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3375
diff changeset
1699 _("An MSN screenname must be in the form \"user@server.com\". "
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3375
diff changeset
1700 "Perhaps you meant %s@hotmail.com. No changes were made to your "
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3375
diff changeset
1701 "allow list."), who);
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3375
diff changeset
1702 do_error_dialog(_("Invalid MSN screenname"), buf, GAIM_ERROR);
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1703 gaim_privacy_permit_remove(gc->account, who);
2665
966d8e2b5017 [gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2611
diff changeset
1704 return;
966d8e2b5017 [gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2611
diff changeset
1705 }
966d8e2b5017 [gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2611
diff changeset
1706
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1707 if (g_slist_find_custom(gc->account->deny, who, (GCompareFunc)strcmp)) {
3294
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1708 debug_printf("MSN: Moving %s from BL to AL\n", who);
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1709 gaim_privacy_deny_remove(gc->account, who);
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1710 g_snprintf(buf, sizeof(buf), "REM %u BL %s\r\n", ++md->trId, who);
3294
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1711 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1712 hide_login_progress(gc, _("Write error"));
3294
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1713 signoff(gc);
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1714 return;
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1715 }
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1716 }
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1717 g_snprintf(buf, sizeof(buf), "ADD %u AL %s %s\r\n", ++md->trId, who, who);
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1718 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1719 hide_login_progress(gc, _("Write error"));
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1720 signoff(gc);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1721 return;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1722 }
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1723 }
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1724
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
1725 static void msn_rem_permit(struct gaim_connection *gc, const char *who)
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1726 {
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1727 struct msn_data *md = gc->proto_data;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1728 char buf[MSN_BUF_LEN];
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1729
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1730 g_snprintf(buf, sizeof(buf), "REM %u AL %s\r\n", ++md->trId, who);
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1731 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1732 hide_login_progress(gc, _("Write error"));
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1733 signoff(gc);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1734 return;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1735 }
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
1736
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1737 gaim_privacy_deny_add(gc->account, who);
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1738 g_snprintf(buf, sizeof(buf), "ADD %u BL %s %s\r\n", ++md->trId, who, who);
3294
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1739 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1740 hide_login_progress(gc, _("Write error"));
3294
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1741 signoff(gc);
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1742 return;
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1743 }
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1744 }
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1745
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
1746 static void msn_add_deny(struct gaim_connection *gc, const char *who)
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1747 {
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1748 struct msn_data *md = gc->proto_data;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1749 char buf[MSN_BUF_LEN];
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
1750
2665
966d8e2b5017 [gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2611
diff changeset
1751 if (!strchr(who, '@')) {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3375
diff changeset
1752 g_snprintf(buf, sizeof(buf),
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3375
diff changeset
1753 _("An MSN screenname must be in the form \"user@server.com\". "
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3375
diff changeset
1754 "Perhaps you meant %s@hotmail.com. No changes were made to your "
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3375
diff changeset
1755 "block list."), who);
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3375
diff changeset
1756 do_error_dialog(_("Invalid MSN screenname"), buf, GAIM_ERROR);
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1757 gaim_privacy_deny_remove(gc->account, who);
2665
966d8e2b5017 [gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2611
diff changeset
1758 return;
966d8e2b5017 [gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2611
diff changeset
1759 }
966d8e2b5017 [gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2611
diff changeset
1760
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1761 if (g_slist_find_custom(gc->account->permit, who, (GCompareFunc)strcmp)) {
3294
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1762 debug_printf("MSN: Moving %s from AL to BL\n", who);
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1763 gaim_privacy_permit_remove(gc->account, who);
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1764 g_snprintf(buf, sizeof(buf), "REM %u AL %s\r\n", ++md->trId, who);
3294
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1765 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1766 hide_login_progress(gc, _("Write error"));
3294
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1767 signoff(gc);
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1768 return;
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1769 }
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1770 }
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
1771
3294
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1772
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1773 g_snprintf(buf, sizeof(buf), "ADD %u BL %s %s\r\n", ++md->trId, who, who);
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1774 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1775 hide_login_progress(gc, _("Write error"));
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1776 signoff(gc);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1777 return;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1778 }
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1779 }
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1780
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
1781 static void msn_rem_deny(struct gaim_connection *gc, const char *who)
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1782 {
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1783 struct msn_data *md = gc->proto_data;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1784 char buf[MSN_BUF_LEN];
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1785
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1786 g_snprintf(buf, sizeof(buf), "REM %u BL %s\r\n", ++md->trId, who);
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1787 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1788 hide_login_progress(gc, _("Write error"));
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1789 signoff(gc);
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1790 return;
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1791 }
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4333
diff changeset
1792
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4474
diff changeset
1793 gaim_privacy_permit_add(gc->account, who);
4270
fdf277afb41a [gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4249
diff changeset
1794 g_snprintf(buf, sizeof(buf), "ADD %u AL %s %s\r\n", ++md->trId, who, who);
3294
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1795 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4044
diff changeset
1796 hide_login_progress(gc, _("Write error"));
3294
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1797 signoff(gc);
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1798 return;
74261923ed7d [gaim-migrate @ 3312]
Sean Egan <seanegan@pidgin.im>
parents: 3293
diff changeset
1799 }
2597
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1800 }
51ca3fb939c9 [gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2591
diff changeset
1801
2607
7bcd3ea48df3 [gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2603
diff changeset
1802 static void msn_buddy_free(struct buddy *b)
7bcd3ea48df3 [gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2603
diff changeset
1803 {
7bcd3ea48df3 [gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2603
diff changeset
1804 if (b->proto_data)
7bcd3ea48df3 [gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2603
diff changeset
1805 g_free(b->proto_data);
7bcd3ea48df3 [gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2603
diff changeset
1806 }
7bcd3ea48df3 [gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2603
diff changeset
1807
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1808 static GaimPluginProtocolInfo prpl_info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1809 {
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1810 GAIM_PROTO_MSN,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1811 OPT_PROTO_MAIL_CHECK,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1812 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1813 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1814 msn_list_icon,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1815 msn_list_emblems,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1816 msn_status_text,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1817 msn_tooltip_text,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1818 msn_away_states,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1819 msn_actions,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1820 msn_buddy_menu,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1821 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1822 msn_login,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1823 msn_close,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1824 msn_send_im,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1825 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1826 msn_send_typing,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1827 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1828 msn_set_away,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1829 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1830 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1831 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1832 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1833 msn_set_idle,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1834 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1835 msn_add_buddy,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1836 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1837 msn_rem_buddy,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1838 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1839 msn_add_permit,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1840 msn_add_deny,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1841 msn_rem_permit,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1842 msn_rem_deny,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1843 msn_set_permit_deny,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1844 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1845 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1846 msn_chat_invite,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1847 msn_chat_leave,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1848 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1849 msn_chat_send,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1850 msn_keepalive,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1851 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1852 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1853 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1854 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1855 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1856 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1857 msn_buddy_free,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1858 msn_convo_closed,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1859 msn_normalize
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1860 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1861
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1862 static GaimPluginInfo info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1863 {
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1864 2, /**< api_version */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1865 GAIM_PLUGIN_PROTOCOL, /**< type */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1866 NULL, /**< ui_requirement */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1867 0, /**< flags */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1868 NULL, /**< dependencies */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1869 GAIM_PRIORITY_DEFAULT, /**< priority */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1870
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1871 "prpl-msn", /**< id */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1872 "MSN", /**< name */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1873 VERSION, /**< version */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1874 /** summary */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1875 N_("MSN Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1876 /** description */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1877 N_("MSN Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1878 "Christian Hammond <chipx86@gnupdate.org>", /**< author */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1879 WEBSITE, /**< homepage */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1880
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1881 NULL, /**< load */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1882 NULL, /**< unload */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1883 NULL, /**< destroy */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1884
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1885 NULL, /**< ui_info */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1886 &prpl_info /**< extra_info */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1887 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1888
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1889 static void
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1890 __init_plugin(GaimPlugin *plugin)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1891 {
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3538
diff changeset
1892 struct proto_user_opt *puo;
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3538
diff changeset
1893
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3538
diff changeset
1894 puo = g_new0(struct proto_user_opt, 1);
4966
8c3e1d30d62b [gaim-migrate @ 5300]
Nathan Walp <nwalp@pidgin.im>
parents: 4921
diff changeset
1895 puo->label = g_strdup(_("Login Server:"));
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3538
diff changeset
1896 puo->def = g_strdup(MSN_SERVER);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3538
diff changeset
1897 puo->pos = USEROPT_MSNSERVER;
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1898 prpl_info.user_opts = g_list_append(prpl_info.user_opts, puo);
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3538
diff changeset
1899
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3538
diff changeset
1900 puo = g_new0(struct proto_user_opt, 1);
4115
7a92554f5800 [gaim-migrate @ 4332]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4112
diff changeset
1901 puo->label = g_strdup(_("Port:"));
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3538
diff changeset
1902 puo->def = g_strdup("1863");
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3538
diff changeset
1903 puo->pos = USEROPT_MSNPORT;
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1904 prpl_info.user_opts = g_list_append(prpl_info.user_opts, puo);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1905
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1906 my_protocol = plugin;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1907 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1908
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5191
diff changeset
1909 GAIM_INIT_PLUGIN(msn, __init_plugin, info);

mercurial