Mercurial > pidgin
annotate libpurple/protocols/msn/oim.c @ 28260:ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
signs off and back on, and that the faltcode is such:
<soap:Fault>
<faultcode>AuthenticationFailed</faultcode>
<faultstring>Authentication Failed</faultstring>
<detail>
<TweenerChallenge xmlns="http://www.hotmail.msn.com/ws/2004/09/oim/rsi">Passport1.4 blah blah blah blah</TweenerChallenge>
</detail>
</soap:Fault>
and so he says, "I'm pretty sure just switching badcontexttoken or adding another else if will fix it :P"
As usual, ZERO amount of verification was done.
But don't we have a lot of users who offered to help except they can't code?
Hint hint hint.
author | Ka-Hing Cheung <khc@hxbc.us> |
---|---|
date | Tue, 15 Sep 2009 01:04:11 +0000 |
parents | 7921a53b94b3 |
children | 203839bc0f7c |
rev | line source |
---|---|
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
1 /** |
23298
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22930
diff
changeset
|
2 * @file oim.c |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
3 * get and send MSN offline Instant Message via SOAP request |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
4 * Author |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
5 * MaYuan<mayuan2006@gmail.com> |
20401
4ddc27c18781
Fix up some gaim -> purple issues.
Richard Laager <rlaager@wiktel.com>
parents:
20394
diff
changeset
|
6 * purple |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
7 * |
20401
4ddc27c18781
Fix up some gaim -> purple issues.
Richard Laager <rlaager@wiktel.com>
parents:
20394
diff
changeset
|
8 * Purple is the legal property of its developers, whose names are too numerous |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
9 * to list here. Please refer to the COPYRIGHT file distributed with this |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
10 * source distribution. |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
11 * |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
12 * This program is free software; you can redistribute it and/or modify |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
13 * it under the terms of the GNU General Public License as published by |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
14 * the Free Software Foundation; either version 2 of the License, or |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
15 * (at your option) any later version. |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
16 * |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
17 * This program is distributed in the hope that it will be useful, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
20 * GNU General Public License for more details. |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
21 * |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
22 * You should have received a copy of the GNU General Public License |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
23 * along with this program; if not, write to the Free Software |
28070
7921a53b94b3
Oops, Elliott correctly pointed out this was wrong...
Paul Aurich <paul@darkrain42.org>
parents:
28049
diff
changeset
|
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
25 */ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
26 #include "msn.h" |
23507
711773577380
Clean up some MSN SOAP stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23492
diff
changeset
|
27 #include "soap.h" |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
28 #include "oim.h" |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
29 #include "msnutils.h" |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
30 |
20536
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
31 typedef struct _MsnOimSendReq { |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
32 char *from_member; |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
33 char *friendname; |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
34 char *to_member; |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
35 char *oim_msg; |
20536
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
36 } MsnOimSendReq; |
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
37 |
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
38 typedef struct { |
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
39 MsnOim *oim; |
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
40 char *msg_id; |
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
41 } MsnOimRecvData; |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
42 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
43 /*Local Function Prototype*/ |
23454
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
44 static void msn_parse_oim_xml(MsnOim *oim, xmlnode *node); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
45 static void msn_oim_free_send_req(MsnOimSendReq *req); |
23670
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
46 static void msn_oim_recv_data_free(MsnOimRecvData *data); |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
47 static void msn_oim_post_single_get_msg(MsnOim *oim, MsnOimRecvData *data); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
48 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
49 /*new a OIM object*/ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
50 MsnOim * |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
51 msn_oim_new(MsnSession *session) |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
52 { |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
53 MsnOim *oim; |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
54 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
55 oim = g_new0(MsnOim, 1); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
56 oim->session = session; |
22832
f62a4a7fe365
Fix a number of leaks. As far as I can tell, MSNP14 now logs in without
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22828
diff
changeset
|
57 oim->oim_list = NULL; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
58 oim->run_id = rand_guid(); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
59 oim->challenge = NULL; |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
60 oim->send_queue = g_queue_new(); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
61 oim->send_seq = 1; |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
62 return oim; |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
63 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
64 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
65 /*destroy the oim object*/ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
66 void |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
67 msn_oim_destroy(MsnOim *oim) |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
68 { |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
69 MsnOimSendReq *request; |
22832
f62a4a7fe365
Fix a number of leaks. As far as I can tell, MSNP14 now logs in without
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22828
diff
changeset
|
70 |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
71 purple_debug_info("msn", "destroy the OIM %p\n", oim); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
72 g_free(oim->run_id); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
73 g_free(oim->challenge); |
22832
f62a4a7fe365
Fix a number of leaks. As far as I can tell, MSNP14 now logs in without
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22828
diff
changeset
|
74 |
23670
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
75 while ((request = g_queue_pop_head(oim->send_queue)) != NULL) |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
76 msn_oim_free_send_req(request); |
23670
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
77 g_queue_free(oim->send_queue); |
22832
f62a4a7fe365
Fix a number of leaks. As far as I can tell, MSNP14 now logs in without
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22828
diff
changeset
|
78 |
23670
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
79 while (oim->oim_list != NULL) |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
80 msn_oim_recv_data_free((MsnOimRecvData *)oim->oim_list->data); |
22832
f62a4a7fe365
Fix a number of leaks. As far as I can tell, MSNP14 now logs in without
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22828
diff
changeset
|
81 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
82 g_free(oim); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
83 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
84 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
85 static MsnOimSendReq * |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
86 msn_oim_new_send_req(const char *from_member, const char*friendname, |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
87 const char* to_member, const char *msg) |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
88 { |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
89 MsnOimSendReq *request; |
23298
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22930
diff
changeset
|
90 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
91 request = g_new0(MsnOimSendReq, 1); |
22832
f62a4a7fe365
Fix a number of leaks. As far as I can tell, MSNP14 now logs in without
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22828
diff
changeset
|
92 request->from_member = g_strdup(from_member); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
93 request->friendname = g_strdup(friendname); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
94 request->to_member = g_strdup(to_member); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
95 request->oim_msg = g_strdup(msg); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
96 return request; |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
97 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
98 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
99 static void |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
100 msn_oim_free_send_req(MsnOimSendReq *req) |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
101 { |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
102 g_return_if_fail(req != NULL); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
103 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
104 g_free(req->from_member); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
105 g_free(req->friendname); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
106 g_free(req->to_member); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
107 g_free(req->oim_msg); |
23298
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22930
diff
changeset
|
108 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
109 g_free(req); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
110 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
111 |
23670
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
112 static MsnOimRecvData * |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
113 msn_oim_recv_data_new(MsnOim *oim, char *msg_id) |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
114 { |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
115 MsnOimRecvData *data; |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
116 |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
117 data = g_new0(MsnOimRecvData, 1); |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
118 data->oim = oim; |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
119 data->msg_id = msg_id; |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
120 |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
121 oim->oim_list = g_list_append(oim->oim_list, data); |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
122 |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
123 return data; |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
124 } |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
125 |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
126 /* Probably only good for g_list_find_custom */ |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
127 static gint |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
128 msn_recv_data_equal(MsnOimRecvData *a, const char *msg_id) |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
129 { |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
130 return strcmp(a->msg_id, msg_id); |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
131 } |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
132 |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
133 static void |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
134 msn_oim_recv_data_free(MsnOimRecvData *data) |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
135 { |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
136 data->oim->oim_list = g_list_remove(data->oim->oim_list, data); |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
137 g_free(data->msg_id); |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
138 |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
139 g_free(data); |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
140 } |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
141 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
142 /**************************************** |
23469
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
143 * Manage OIM Tokens |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
144 ****************************************/ |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
145 typedef struct _MsnOimRequestData { |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
146 MsnOim *oim; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
147 gboolean send; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
148 const char *action; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
149 const char *host; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
150 const char *url; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
151 xmlnode *body; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
152 MsnSoapCallback cb; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
153 gpointer cb_data; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
154 } MsnOimRequestData; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
155 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
156 static void msn_oim_request_helper(MsnOimRequestData *data); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
157 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
158 static void |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
159 msn_oim_request_cb(MsnSoapMessage *request, MsnSoapMessage *response, |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
160 gpointer req_data) |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
161 { |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
162 MsnOimRequestData *data = (MsnOimRequestData *)req_data; |
23492
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23490
diff
changeset
|
163 xmlnode *fault = NULL; |
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23490
diff
changeset
|
164 xmlnode *faultcode = NULL; |
23469
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
165 |
23553
2a4341e3d2da
Avoid a crash in OIM processing if the request was cancelled outside of
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23551
diff
changeset
|
166 if (response == NULL) |
2a4341e3d2da
Avoid a crash in OIM processing if the request was cancelled outside of
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23551
diff
changeset
|
167 return; |
2a4341e3d2da
Avoid a crash in OIM processing if the request was cancelled outside of
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23551
diff
changeset
|
168 |
23492
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23490
diff
changeset
|
169 fault = xmlnode_get_child(response->xml, "Body/Fault"); |
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23490
diff
changeset
|
170 if (fault) |
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23490
diff
changeset
|
171 faultcode = xmlnode_get_child(fault, "faultcode"); |
23469
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
172 |
23492
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23490
diff
changeset
|
173 if (faultcode) { |
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23490
diff
changeset
|
174 gchar *faultcode_str = xmlnode_get_data(faultcode); |
28260
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28070
diff
changeset
|
175 gboolean need_token_update = FALSE; |
23469
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
176 |
28260
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28070
diff
changeset
|
177 if (faultcode_str) { |
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28070
diff
changeset
|
178 if (g_str_equal(faultcode_str, "q0:BadContextToken") || |
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28070
diff
changeset
|
179 g_str_equal(faultcode_str, "AuthenticationFailed")) |
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28070
diff
changeset
|
180 need_token_update = TRUE; |
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28070
diff
changeset
|
181 else if (g_str_equal(faultcode_str, "q0:AuthenticationFailed") && |
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28070
diff
changeset
|
182 xmlnode_get_child(fault, "detail/RequiredAuthPolicy") != NULL) |
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28070
diff
changeset
|
183 need_token_update = TRUE; |
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28070
diff
changeset
|
184 } |
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28070
diff
changeset
|
185 |
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28070
diff
changeset
|
186 if (need_token_update) { |
26196
399776a9ad98
Add some missing newlines in debug messages.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25286
diff
changeset
|
187 purple_debug_warning("msn", "OIM Request Error, Updating token now.\n"); |
23469
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
188 msn_nexus_update_token(data->oim->session->nexus, |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
189 data->send ? MSN_AUTH_LIVE_SECURE : MSN_AUTH_MESSENGER_WEB, |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
190 (GSourceFunc)msn_oim_request_helper, data); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
191 g_free(faultcode_str); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
192 return; |
23492
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23490
diff
changeset
|
193 |
23469
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
194 } |
28260
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28070
diff
changeset
|
195 |
23469
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
196 g_free(faultcode_str); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
197 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
198 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
199 if (data->cb) |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
200 data->cb(request, response, data->cb_data); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
201 xmlnode_free(data->body); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
202 g_free(data); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
203 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
204 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
205 static void |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
206 msn_oim_request_helper(MsnOimRequestData *data) |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
207 { |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
208 MsnSession *session = data->oim->session; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
209 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
210 if (data->send) { |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
211 /* The Sending of OIM's uses a different token for some reason. */ |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
212 xmlnode *ticket; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
213 ticket = xmlnode_get_child(data->body, "Header/Ticket"); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
214 xmlnode_set_attrib(ticket, "passport", |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
215 msn_nexus_get_token_str(session->nexus, MSN_AUTH_LIVE_SECURE)); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
216 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
217 else |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
218 { |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
219 xmlnode *passport; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
220 xmlnode *xml_t; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
221 xmlnode *xml_p; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
222 GHashTable *token; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
223 const char *msn_t; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
224 const char *msn_p; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
225 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
226 token = msn_nexus_get_token(session->nexus, MSN_AUTH_MESSENGER_WEB); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
227 g_return_if_fail(token != NULL); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
228 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
229 msn_t = g_hash_table_lookup(token, "t"); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
230 msn_p = g_hash_table_lookup(token, "p"); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
231 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
232 g_return_if_fail(msn_t != NULL); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
233 g_return_if_fail(msn_p != NULL); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
234 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
235 passport = xmlnode_get_child(data->body, "Header/PassportCookie"); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
236 xml_t = xmlnode_get_child(passport, "t"); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
237 xml_p = xmlnode_get_child(passport, "p"); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
238 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
239 /* frees old token text, or the 'EMPTY' text if first time */ |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
240 xmlnode_free(xml_t->child); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
241 xmlnode_free(xml_p->child); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
242 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
243 xmlnode_insert_data(xml_t, msn_t, -1); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
244 xmlnode_insert_data(xml_p, msn_p, -1); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
245 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
246 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
247 msn_soap_message_send(session, |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
248 msn_soap_message_new(data->action, xmlnode_copy(data->body)), |
23613
860e5e210fc9
Don't print SOAP messages to debug log for "secure" requests. This is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23612
diff
changeset
|
249 data->host, data->url, FALSE, |
860e5e210fc9
Don't print SOAP messages to debug log for "secure" requests. This is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23612
diff
changeset
|
250 msn_oim_request_cb, data); |
23469
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
251 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
252 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
253 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
254 static void |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
255 msn_oim_make_request(MsnOim *oim, gboolean send, const char *action, |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
256 const char *host, const char *url, xmlnode *body, MsnSoapCallback cb, |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
257 gpointer cb_data) |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
258 { |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
259 MsnOimRequestData *data = g_new0(MsnOimRequestData, 1); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
260 data->oim = oim; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
261 data->send = send; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
262 data->action = action; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
263 data->host = host; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
264 data->url = url; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
265 data->body = body; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
266 data->cb = cb; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
267 data->cb_data = cb_data; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
268 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
269 msn_oim_request_helper(data); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
270 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
271 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
272 /**************************************** |
23454
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
273 * OIM GetMetadata request |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
274 * **************************************/ |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
275 static void |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
276 msn_oim_get_metadata_cb(MsnSoapMessage *request, MsnSoapMessage *response, |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
277 gpointer data) |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
278 { |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
279 MsnOim *oim = data; |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
280 |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
281 if (response) { |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
282 msn_parse_oim_xml(oim, |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
283 xmlnode_get_child(response->xml, "Body/GetMetadataResponse/MD")); |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
284 } |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
285 } |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
286 |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
287 /* Post to get the OIM Metadata */ |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
288 static void |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
289 msn_oim_get_metadata(MsnOim *oim) |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
290 { |
23469
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
291 msn_oim_make_request(oim, FALSE, MSN_OIM_GET_METADATA_ACTION, |
23454
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
292 MSN_OIM_RETRIEVE_HOST, MSN_OIM_RETRIEVE_URL, |
23469
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
293 xmlnode_from_str(MSN_OIM_GET_METADATA_TEMPLATE, -1), |
23454
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
294 msn_oim_get_metadata_cb, oim); |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
295 } |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
296 |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
297 /**************************************** |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
298 * OIM send SOAP request |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
299 * **************************************/ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
300 /*encode the message to OIM Message Format*/ |
20989
2097b1664fa3
Fix some leaks and prevent some unnecessary allocations and frees.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20858
diff
changeset
|
301 static gchar * |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
302 msn_oim_msg_to_str(MsnOim *oim, const char *body) |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
303 { |
23547
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
304 GString *oim_body; |
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
305 char *oim_base64; |
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
306 char *c; |
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
307 int len; |
23550
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23547
diff
changeset
|
308 size_t base64_len; |
23547
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
309 |
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
310 purple_debug_info("msn", "Encoding OIM Message...\n"); |
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
311 len = strlen(body); |
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
312 c = oim_base64 = purple_base64_encode((const guchar *)body, len); |
23550
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23547
diff
changeset
|
313 base64_len = strlen(oim_base64); |
23547
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
314 purple_debug_info("msn", "Encoded base64 body:{%s}\n", oim_base64); |
23298
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22930
diff
changeset
|
315 |
23547
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
316 oim_body = g_string_new(NULL); |
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
317 g_string_printf(oim_body, MSN_OIM_MSG_TEMPLATE, |
23551
73f61c445827
Commit the changes to oim.h that I forgot last time. Fixes #6343,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23550
diff
changeset
|
318 oim->run_id, oim->send_seq); |
23547
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
319 |
23550
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23547
diff
changeset
|
320 #define OIM_LINE_LEN 76 |
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23547
diff
changeset
|
321 while (base64_len > OIM_LINE_LEN) { |
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23547
diff
changeset
|
322 g_string_append_len(oim_body, c, OIM_LINE_LEN); |
23547
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
323 g_string_append_c(oim_body, '\n'); |
23550
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23547
diff
changeset
|
324 c += OIM_LINE_LEN; |
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23547
diff
changeset
|
325 base64_len -= OIM_LINE_LEN; |
23547
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
326 } |
23550
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23547
diff
changeset
|
327 #undef OIM_LINE_LEN |
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23547
diff
changeset
|
328 |
23547
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
329 g_string_append(oim_body, c); |
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
330 |
20989
2097b1664fa3
Fix some leaks and prevent some unnecessary allocations and frees.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20858
diff
changeset
|
331 g_free(oim_base64); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
332 |
23547
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23519
diff
changeset
|
333 return g_string_free(oim_body, FALSE); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
334 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
335 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
336 /* |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
337 * Process the send return SOAP string |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
338 * If got SOAP Fault,get the lock key,and resend it. |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
339 */ |
20430 | 340 static void |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
341 msn_oim_send_read_cb(MsnSoapMessage *request, MsnSoapMessage *response, |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
342 gpointer data) |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
343 { |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
344 MsnOim *oim = data; |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
345 MsnOimSendReq *msg = g_queue_pop_head(oim->send_queue); |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
346 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
347 g_return_if_fail(msg != NULL); |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
348 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
349 if (response == NULL) { |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
350 purple_debug_info("msn", "cannot send OIM: %s\n", msg->oim_msg); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
351 } else { |
23453
bca58b00afab
References #4382, replaces usage of msn_soap_xml_get with xmlnode_get_child
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23452
diff
changeset
|
352 xmlnode *faultNode = xmlnode_get_child(response->xml, "Body/Fault"); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
353 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
354 if (faultNode == NULL) { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
355 /*Send OK! return*/ |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
356 purple_debug_info("msn", "sent OIM: %s\n", msg->oim_msg); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
357 } else { |
20538
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
358 xmlnode *faultcode = xmlnode_get_child(faultNode, "faultcode"); |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
359 |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
360 if (faultcode) { |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
361 char *faultcode_str = xmlnode_get_data(faultcode); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
362 |
20538
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
363 if (g_str_equal(faultcode_str, "q0:AuthenticationFailed")) { |
23453
bca58b00afab
References #4382, replaces usage of msn_soap_xml_get with xmlnode_get_child
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23452
diff
changeset
|
364 xmlnode *challengeNode = xmlnode_get_child(faultNode, |
20538
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
365 "detail/LockKeyChallenge"); |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
366 |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
367 if (challengeNode == NULL) { |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
368 if (oim->challenge) { |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
369 g_free(oim->challenge); |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
370 oim->challenge = NULL; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
371 |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
372 purple_debug_info("msn", "Resending OIM: %s\n", |
20538
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
373 msg->oim_msg); |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
374 g_queue_push_head(oim->send_queue, msg); |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
375 msn_oim_send_msg(oim); |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
376 } else { |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
377 purple_debug_info("msn", |
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
378 "Can't find lock key for OIM: %s\n", |
20538
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
379 msg->oim_msg); |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
380 } |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
381 } else { |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
382 char buf[33]; |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
383 |
20538
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
384 char *challenge = xmlnode_get_data(challengeNode); |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
385 msn_handle_chl(challenge, buf); |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
386 |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
387 g_free(oim->challenge); |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
388 oim->challenge = g_strndup(buf, sizeof(buf)); |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
389 g_free(challenge); |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
390 purple_debug_info("msn", "Found lockkey:{%s}\n", oim->challenge); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
391 |
20538
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
392 /*repost the send*/ |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
393 purple_debug_info("msn", "Resending OIM: %s\n", msg->oim_msg); |
20538
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
394 g_queue_push_head(oim->send_queue, msg); |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
395 msn_oim_send_msg(oim); |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
396 } |
23490
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
397 } else { |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
398 /* Report the error */ |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
399 const char *str_reason; |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
400 |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
401 if (g_str_equal(faultcode_str, "q0:SystemUnavailable")) { |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
402 str_reason = _("Message was not sent because the system is " |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
403 "unavailable. This normally happens when the " |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
404 "user is blocked or does not exist."); |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
405 |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
406 } else if (g_str_equal(faultcode_str, "q0:SenderThrottleLimitExceeded")) { |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
407 str_reason = _("Message was not sent because messages " |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
408 "are being sent too quickly."); |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
409 |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
410 } else if (g_str_equal(faultcode_str, "q0:InvalidContent")) { |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
411 str_reason = _("Message was not sent because an unknown " |
23569
a97c1628c803
Fix up some spelling mistakes in MSN oim.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23553
diff
changeset
|
412 "encoding error occurred."); |
23490
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
413 |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
414 } else { |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
415 str_reason = _("Message was not sent because an unknown " |
23569
a97c1628c803
Fix up some spelling mistakes in MSN oim.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23553
diff
changeset
|
416 "error occurred."); |
23490
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
417 } |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
418 |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
419 msn_session_report_user(oim->session, msg->to_member, |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
420 str_reason, PURPLE_MESSAGE_ERROR); |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
421 msn_session_report_user(oim->session, msg->to_member, |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23489
diff
changeset
|
422 msg->oim_msg, PURPLE_MESSAGE_RAW); |
20538
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
423 } |
22828
7d3b2c023ad8
This is the way we plug the leaks, plug the leaks, plug the leaks...
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21767
diff
changeset
|
424 |
7d3b2c023ad8
This is the way we plug the leaks, plug the leaks, plug the leaks...
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21767
diff
changeset
|
425 g_free(faultcode_str); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
426 } |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
427 } |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
428 } |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
429 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
430 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
431 void |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
432 msn_oim_prep_send_msg_info(MsnOim *oim, const char *membername, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
433 const char* friendname, const char *tomember, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
434 const char * msg) |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
435 { |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
436 g_return_if_fail(oim != NULL); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
437 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
438 g_queue_push_tail(oim->send_queue, |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
439 msn_oim_new_send_req(membername, friendname, tomember, msg)); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
440 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
441 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
442 /*post send single message request to oim server*/ |
23298
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22930
diff
changeset
|
443 void |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
444 msn_oim_send_msg(MsnOim *oim) |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
445 { |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
446 MsnOimSendReq *oim_request; |
23447
72aa2ccad28d
fix sending offline message in p15 by sending the correct token. In msnp14,
Ka-Hing Cheung <khc@hxbc.us>
parents:
23443
diff
changeset
|
447 char *soap_body; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
448 char *msg_body; |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
449 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
450 g_return_if_fail(oim != NULL); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
451 oim_request = g_queue_peek_head(oim->send_queue); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
452 g_return_if_fail(oim_request != NULL); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
453 |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
454 purple_debug_info("msn", "Sending OIM: %s\n", oim_request->oim_msg); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
455 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
456 /* if we got the challenge lock key, we compute it |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
457 * else we go for the SOAP fault and resend it. |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
458 */ |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
459 if (oim->challenge == NULL){ |
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
460 purple_debug_info("msn", "No lock key challenge, waiting for SOAP Fault and Resend\n"); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
461 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
462 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
463 msg_body = msn_oim_msg_to_str(oim, oim_request->oim_msg); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
464 soap_body = g_strdup_printf(MSN_OIM_SEND_TEMPLATE, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
465 oim_request->from_member, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
466 oim_request->friendname, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
467 oim_request->to_member, |
23443
75be80ddeca5
Patch 1 from Qulogic, this one mostly updates the version sent by pidgin
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
21767
diff
changeset
|
468 MSNP15_WLM_PRODUCT_ID, |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
469 oim->challenge ? oim->challenge : "", |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
470 oim->send_seq, |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
471 msg_body); |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
472 |
23469
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
473 msn_oim_make_request(oim, TRUE, MSN_OIM_SEND_SOAP_ACTION, MSN_OIM_SEND_HOST, |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
474 MSN_OIM_SEND_URL, xmlnode_from_str(soap_body, -1), msn_oim_send_read_cb, |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
475 oim); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
476 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
477 /*increase the offline Sequence control*/ |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
478 if (oim->challenge != NULL) { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
479 oim->send_seq++; |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
480 } |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
481 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
482 g_free(msg_body); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
483 g_free(soap_body); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
484 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
485 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
486 /**************************************** |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
487 * OIM delete SOAP request |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
488 * **************************************/ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
489 static void |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
490 msn_oim_delete_read_cb(MsnSoapMessage *request, MsnSoapMessage *response, |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
491 gpointer data) |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
492 { |
20536
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
493 MsnOimRecvData *rdata = data; |
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
494 |
23670
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
495 if (response && xmlnode_get_child(response->xml, "Body/Fault") == NULL) |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
496 purple_debug_info("msn", "Delete OIM success\n"); |
23670
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
497 else |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
498 purple_debug_info("msn", "Delete OIM failed\n"); |
20536
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
499 |
23670
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
500 msn_oim_recv_data_free(rdata); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
501 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
502 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
503 /*Post to get the Offline Instant Message*/ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
504 static void |
20536
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
505 msn_oim_post_delete_msg(MsnOimRecvData *rdata) |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
506 { |
20536
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
507 MsnOim *oim = rdata->oim; |
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
508 char *msgid = rdata->msg_id; |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
509 char *soap_body; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
510 |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
511 purple_debug_info("msn", "Delete single OIM Message {%s}\n",msgid); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
512 |
23469
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
513 soap_body = g_strdup_printf(MSN_OIM_DEL_TEMPLATE, msgid); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
514 |
23469
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
515 msn_oim_make_request(oim, FALSE, MSN_OIM_DEL_SOAP_ACTION, MSN_OIM_RETRIEVE_HOST, |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
516 MSN_OIM_RETRIEVE_URL, xmlnode_from_str(soap_body, -1), msn_oim_delete_read_cb, rdata); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
517 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
518 g_free(soap_body); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
519 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
520 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
521 /**************************************** |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
522 * OIM get SOAP request |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
523 * **************************************/ |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
524 /* like purple_str_to_time, but different. The format of the timestamp |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
525 * is like this: 5 Sep 2007 21:42:12 -0700 */ |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
526 static time_t |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
527 msn_oim_parse_timestamp(const char *timestamp) |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
528 { |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
529 char month_str[4], tz_str[6]; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
530 char *tz_ptr = tz_str; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
531 static const char *months[] = { |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
532 "Jan", "Feb", "Mar", "Apr", "May", "Jun", |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
533 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
534 }; |
20535
a9ee3fbabf81
fixes oim timestamp for me, non HAVE_TM_GMTOFF people probably want to test
Ka-Hing Cheung <khc@hxbc.us>
parents:
20534
diff
changeset
|
535 time_t tval = 0; |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
536 struct tm t; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
537 memset(&t, 0, sizeof(t)); |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
538 |
20535
a9ee3fbabf81
fixes oim timestamp for me, non HAVE_TM_GMTOFF people probably want to test
Ka-Hing Cheung <khc@hxbc.us>
parents:
20534
diff
changeset
|
539 time(&tval); |
a9ee3fbabf81
fixes oim timestamp for me, non HAVE_TM_GMTOFF people probably want to test
Ka-Hing Cheung <khc@hxbc.us>
parents:
20534
diff
changeset
|
540 localtime_r(&tval, &t); |
a9ee3fbabf81
fixes oim timestamp for me, non HAVE_TM_GMTOFF people probably want to test
Ka-Hing Cheung <khc@hxbc.us>
parents:
20534
diff
changeset
|
541 |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
542 if (sscanf(timestamp, "%02d %03s %04d %02d:%02d:%02d %05s", |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
543 &t.tm_mday, month_str, &t.tm_year, |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
544 &t.tm_hour, &t.tm_min, &t.tm_sec, tz_str) == 7) { |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
545 gboolean offset_positive = TRUE; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
546 int tzhrs; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
547 int tzmins; |
23298
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22930
diff
changeset
|
548 |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
549 for (t.tm_mon = 0; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
550 months[t.tm_mon] != NULL && |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
551 strcmp(months[t.tm_mon], month_str) != 0; t.tm_mon++); |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
552 if (months[t.tm_mon] != NULL) { |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
553 if (*tz_str == '-') { |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
554 offset_positive = FALSE; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
555 tz_ptr++; |
20496
c32fbef16656
Fixes #2990, apparently I used the wrong #define. Also fix + timezone
Ka-Hing Cheung <khc@hxbc.us>
parents:
20490
diff
changeset
|
556 } else if (*tz_str == '+') { |
c32fbef16656
Fixes #2990, apparently I used the wrong #define. Also fix + timezone
Ka-Hing Cheung <khc@hxbc.us>
parents:
20490
diff
changeset
|
557 tz_ptr++; |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
558 } |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
559 |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
560 if (sscanf(tz_ptr, "%02d%02d", &tzhrs, &tzmins) == 2) { |
20498
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
561 time_t tzoff = tzhrs * 60 * 60 + tzmins * 60; |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
562 #ifdef _WIN32 |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
563 long sys_tzoff; |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
564 #endif |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
565 |
23489
20da64b2e104
Change msn_oim_parse_timestamp to match purple_str_to_time more
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23469
diff
changeset
|
566 if (offset_positive) |
20498
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
567 tzoff *= -1; |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
568 |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
569 t.tm_year -= 1900; |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
570 |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
571 #ifdef _WIN32 |
20503
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
20501
diff
changeset
|
572 if ((sys_tzoff = wpurple_get_tz_offset()) != -1) |
20498
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
573 tzoff += sys_tzoff; |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
574 #else |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
575 #ifdef HAVE_TM_GMTOFF |
23489
20da64b2e104
Change msn_oim_parse_timestamp to match purple_str_to_time more
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23469
diff
changeset
|
576 tzoff += t.tm_gmtoff; |
20498
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
577 #else |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
578 # ifdef HAVE_TIMEZONE |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
579 tzset(); /* making sure */ |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
580 tzoff -= timezone; |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
581 # endif |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
582 #endif |
20498
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
583 #endif /* _WIN32 */ |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
584 |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
585 return mktime(&t) + tzoff; |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
586 } |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
587 } |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
588 } |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
589 |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
590 purple_debug_info("msn", "Can't parse timestamp %s\n", timestamp); |
20535
a9ee3fbabf81
fixes oim timestamp for me, non HAVE_TM_GMTOFF people probably want to test
Ka-Hing Cheung <khc@hxbc.us>
parents:
20534
diff
changeset
|
591 return tval; |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
592 } |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
593 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
594 /*Post the Offline Instant Message to User Conversation*/ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
595 static void |
20536
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
596 msn_oim_report_to_user(MsnOimRecvData *rdata, const char *msg_str) |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
597 { |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
598 MsnMessage *message; |
24729
1385d79ef68f
Clean up msn_oim_report_to_user to avoid extra g_strdup's and call strchr
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23670
diff
changeset
|
599 const char *date; |
1385d79ef68f
Clean up msn_oim_report_to_user to avoid extra g_strdup's and call strchr
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23670
diff
changeset
|
600 const char *from; |
24872
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
601 const char *boundary; |
24730
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
602 char *decode_msg = NULL; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
603 gsize body_len; |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
604 char **tokens; |
24730
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
605 char *passport = NULL; |
20435
f0bc92602072
Parse the message timestamp using purple_str_to_time. I haven't been able
Stu Tomlinson <stu@nosnilmot.com>
parents:
20433
diff
changeset
|
606 time_t stamp; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
607 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
608 message = msn_message_new(MSN_MSG_UNKNOWN); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
609 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
610 msn_message_parse_payload(message, msg_str, strlen(msg_str), |
24729
1385d79ef68f
Clean up msn_oim_report_to_user to avoid extra g_strdup's and call strchr
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23670
diff
changeset
|
611 MSG_OIM_LINE_DEM, MSG_OIM_BODY_DEM); |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
612 purple_debug_info("msn", "oim body:{%s}\n", message->body); |
24730
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
613 |
24872
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
614 boundary = msn_message_get_attr(message, "boundary"); |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
615 |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
616 if (boundary != NULL) { |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
617 char *bounds; |
24730
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
618 char **part; |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
619 |
24872
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
620 bounds = g_strdup_printf("--%s" MSG_OIM_LINE_DEM, boundary); |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
621 tokens = g_strsplit(message->body, bounds, 0); |
24730
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
622 |
24741
fbd1a82247ba
For processing mobile OIM's, fix a crash when searching through each part
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24740
diff
changeset
|
623 /* tokens+1 to skip the "This is a multipart message..." text */ |
fbd1a82247ba
For processing mobile OIM's, fix a crash when searching through each part
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24740
diff
changeset
|
624 for (part = tokens+1; *part != NULL; part++) { |
24730
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
625 MsnMessage *multipart; |
24741
fbd1a82247ba
For processing mobile OIM's, fix a crash when searching through each part
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24740
diff
changeset
|
626 const char *type; |
24730
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
627 multipart = msn_message_new(MSN_MSG_UNKNOWN); |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
628 msn_message_parse_payload(multipart, *part, strlen(*part), |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
629 MSG_OIM_LINE_DEM, MSG_OIM_BODY_DEM); |
24729
1385d79ef68f
Clean up msn_oim_report_to_user to avoid extra g_strdup's and call strchr
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23670
diff
changeset
|
630 |
24741
fbd1a82247ba
For processing mobile OIM's, fix a crash when searching through each part
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24740
diff
changeset
|
631 type = msn_message_get_content_type(multipart); |
fbd1a82247ba
For processing mobile OIM's, fix a crash when searching through each part
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24740
diff
changeset
|
632 if (type && !strcmp(type, "text/plain")) { |
24730
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
633 decode_msg = (char *)purple_base64_decode(multipart->body, &body_len); |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
634 msn_message_destroy(multipart); |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
635 break; |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
636 } |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
637 msn_message_destroy(multipart); |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
638 } |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
639 |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
640 g_strfreev(tokens); |
24872
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
641 g_free(bounds); |
24730
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
642 |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
643 if (decode_msg == NULL) { |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
644 purple_debug_error("msn", "Couldn't find text/plain OIM message.\n"); |
24872
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
645 msn_message_destroy(message); |
24730
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
646 return; |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
647 } |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
648 } else { |
24872
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
649 decode_msg = (char *)purple_base64_decode(message->body, &body_len); |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
650 } |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
651 |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
652 from = msn_message_get_attr(message, "X-OIM-originatingSource"); |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
653 |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
654 /* Match number to user's mobile number, FROM is a phone number |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
655 if the other side pages you using your phone number */ |
25286
2aa4b88bdcf8
I have no idea if this check is needed, but it looked a bit risky without it
Stu Tomlinson <stu@nosnilmot.com>
parents:
24872
diff
changeset
|
656 if (from && !strncmp(from, "tel:+", 5)) { |
24872
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
657 MsnUser *user = msn_userlist_find_user_with_mobile_phone( |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
658 rdata->oim->session->userlist, from + 4); |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
659 |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
660 if (user && user->passport) |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
661 passport = g_strdup(user->passport); |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
662 } |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
663 |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
664 if (passport == NULL) { |
24730
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
665 char *start, *end; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
666 |
24730
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
667 from = msn_message_get_attr(message, "From"); |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
668 |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
669 tokens = g_strsplit(from, " ", 2); |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
670 if (tokens[1] != NULL) |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
671 from = (const char *)tokens[1]; |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
672 |
25558
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
25286
diff
changeset
|
673 start = strchr(from, '<'); |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
25286
diff
changeset
|
674 if (start != NULL) { |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
25286
diff
changeset
|
675 start++; |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
25286
diff
changeset
|
676 end = strchr(from, '>'); |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
25286
diff
changeset
|
677 if (end != NULL) |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
25286
diff
changeset
|
678 passport = g_strndup(start, end - start); |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
25286
diff
changeset
|
679 } |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
25286
diff
changeset
|
680 if (passport == NULL) |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
25286
diff
changeset
|
681 passport = g_strdup(_("Unknown")); |
24730
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
682 |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
683 g_strfreev(tokens); |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
684 } |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
685 |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
686 date = msn_message_get_attr(message, "Date"); |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
687 stamp = msn_oim_parse_timestamp(date); |
24730
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
688 purple_debug_info("msn", "oim Date:{%s},passport{%s}\n", |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24729
diff
changeset
|
689 date, passport); |
20435
f0bc92602072
Parse the message timestamp using purple_str_to_time. I haven't been able
Stu Tomlinson <stu@nosnilmot.com>
parents:
20433
diff
changeset
|
690 |
20536
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
691 serv_got_im(rdata->oim->session->account->gc, passport, decode_msg, 0, |
24729
1385d79ef68f
Clean up msn_oim_report_to_user to avoid extra g_strdup's and call strchr
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23670
diff
changeset
|
692 stamp); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
693 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
694 /*Now get the oim message ID from the oim_list. |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
695 * and append to read list to prepare for deleting the Offline Message when sign out |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
696 */ |
20536
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
697 msn_oim_post_delete_msg(rdata); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
698 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
699 g_free(passport); |
20536
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
700 g_free(decode_msg); |
24872
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24741
diff
changeset
|
701 msn_message_destroy(message); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
702 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
703 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
704 /* Parse the XML data, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
705 * prepare to report the OIM to user |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
706 */ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
707 static void |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
708 msn_oim_get_read_cb(MsnSoapMessage *request, MsnSoapMessage *response, |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
709 gpointer data) |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
710 { |
20536
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
711 MsnOimRecvData *rdata = data; |
20501
f6dff814d95f
cleans up ownership of soap callback data, this soap stuff is perfect
Ka-Hing Cheung <khc@hxbc.us>
parents:
20500
diff
changeset
|
712 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
713 if (response != NULL) { |
23453
bca58b00afab
References #4382, replaces usage of msn_soap_xml_get with xmlnode_get_child
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23452
diff
changeset
|
714 xmlnode *msg_node = xmlnode_get_child(response->xml, |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
715 "Body/GetMessageResponse/GetMessageResult"); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
716 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
717 if (msg_node) { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
718 char *msg_str = xmlnode_get_data(msg_node); |
20536
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
719 msn_oim_report_to_user(rdata, msg_str); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
720 g_free(msg_str); |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
721 } else { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
722 char *str = xmlnode_to_str(response->xml, NULL); |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
723 purple_debug_info("msn", "Unknown OIM response: %s\n", str); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
724 g_free(str); |
23670
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
725 msn_oim_recv_data_free(rdata); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
726 } |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
727 } else { |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
728 purple_debug_info("msn", "Failed to get OIM\n"); |
23670
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
729 msn_oim_recv_data_free(rdata); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
730 } |
23670
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
731 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
732 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
733 |
23298
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22930
diff
changeset
|
734 /* parse the oim XML data |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
735 * and post it to the soap server to get the Offline Message |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
736 * */ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
737 void |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
738 msn_parse_oim_msg(MsnOim *oim,const char *xmlmsg) |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
739 { |
23454
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
740 xmlnode *node; |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
741 |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
742 purple_debug_info("msn", "%s\n", xmlmsg); |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
743 |
23454
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
744 if (!strcmp(xmlmsg, "too-large")) { |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
745 /* Too many OIM's to send via NS, so we need to request them via SOAP. */ |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
746 msn_oim_get_metadata(oim); |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
747 } else { |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
748 node = xmlnode_from_str(xmlmsg, -1); |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
749 msn_parse_oim_xml(oim, node); |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
750 xmlnode_free(node); |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
751 } |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
752 } |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
753 |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
754 static void |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
755 msn_parse_oim_xml(MsnOim *oim, xmlnode *node) |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
756 { |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
757 xmlnode *mNode; |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
758 xmlnode *iu_node; |
20444
a0d104281002
Compile fix, whoops! Thanks Masca/salinasv.
Stu Tomlinson <stu@nosnilmot.com>
parents:
20443
diff
changeset
|
759 MsnSession *session = oim->session; |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
760 |
23454
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
761 g_return_if_fail(node != NULL); |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
762 |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
763 if (strcmp(node->name, "MD") != 0) { |
23454
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
764 char *xmlmsg = xmlnode_to_str(node, NULL); |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
765 purple_debug_info("msn", "WTF is this? %s\n", xmlmsg); |
23454
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23453
diff
changeset
|
766 g_free(xmlmsg); |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
767 return; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
768 } |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
769 |
23453
bca58b00afab
References #4382, replaces usage of msn_soap_xml_get with xmlnode_get_child
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23452
diff
changeset
|
770 iu_node = xmlnode_get_child(node, "E/IU"); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
771 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
772 if (iu_node != NULL && purple_account_get_check_mail(session->account)) |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
773 { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
774 char *unread = xmlnode_get_data(iu_node); |
25606
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25286
diff
changeset
|
775 const char *passports[2] = { msn_user_get_passport(session->user) }; |
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25286
diff
changeset
|
776 const char *urls[2] = { session->passport_info.mail_url }; |
21767
7ac87187bbec
Don't show a 'you ain't got no new mail' notification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21103
diff
changeset
|
777 int count = atoi(unread); |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
778 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
779 /* XXX/khc: pretty sure this is wrong */ |
21767
7ac87187bbec
Don't show a 'you ain't got no new mail' notification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21103
diff
changeset
|
780 if (count > 0) |
7ac87187bbec
Don't show a 'you ain't got no new mail' notification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21103
diff
changeset
|
781 purple_notify_emails(session->account->gc, count, FALSE, NULL, |
25606
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25286
diff
changeset
|
782 NULL, passports, urls, NULL, NULL); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
783 g_free(unread); |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
784 } |
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
785 |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
786 for(mNode = xmlnode_get_child(node, "M"); mNode; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
787 mNode = xmlnode_get_next_twin(mNode)){ |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
788 char *passport, *msgid, *nickname, *rtime = NULL; |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
789 xmlnode *e_node, *i_node, *n_node, *rt_node; |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
790 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
791 e_node = xmlnode_get_child(mNode, "E"); |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
792 passport = xmlnode_get_data(e_node); |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
793 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
794 i_node = xmlnode_get_child(mNode, "I"); |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
795 msgid = xmlnode_get_data(i_node); |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
796 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
797 n_node = xmlnode_get_child(mNode, "N"); |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
798 nickname = xmlnode_get_data(n_node); |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
799 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
800 rt_node = xmlnode_get_child(mNode, "RT"); |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
801 if (rt_node != NULL) { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
802 rtime = xmlnode_get_data(rt_node); |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
803 } |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
804 /* purple_debug_info("msn", "E:{%s},I:{%s},rTime:{%s}\n",passport,msgid,rTime); */ |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
805 |
23670
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
806 if (!g_list_find_custom(oim->oim_list, msgid, (GCompareFunc)msn_recv_data_equal)) { |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
807 MsnOimRecvData *data = msn_oim_recv_data_new(oim, msgid); |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
808 msn_oim_post_single_get_msg(oim, data); |
20535
a9ee3fbabf81
fixes oim timestamp for me, non HAVE_TM_GMTOFF people probably want to test
Ka-Hing Cheung <khc@hxbc.us>
parents:
20534
diff
changeset
|
809 msgid = NULL; |
a9ee3fbabf81
fixes oim timestamp for me, non HAVE_TM_GMTOFF people probably want to test
Ka-Hing Cheung <khc@hxbc.us>
parents:
20534
diff
changeset
|
810 } |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
811 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
812 g_free(passport); |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
813 g_free(msgid); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
814 g_free(rtime); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
815 g_free(nickname); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
816 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
817 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
818 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
819 /*Post to get the Offline Instant Message*/ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
820 static void |
23670
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
821 msn_oim_post_single_get_msg(MsnOim *oim, MsnOimRecvData *data) |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
822 { |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
823 char *soap_body; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
824 |
23519
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23510
diff
changeset
|
825 purple_debug_info("msn", "Get single OIM Message\n"); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
826 |
23670
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
827 soap_body = g_strdup_printf(MSN_OIM_GET_TEMPLATE, data->msg_id); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
828 |
23469
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
829 msn_oim_make_request(oim, FALSE, MSN_OIM_GET_SOAP_ACTION, MSN_OIM_RETRIEVE_HOST, |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
830 MSN_OIM_RETRIEVE_URL, xmlnode_from_str(soap_body, -1), msn_oim_get_read_cb, |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23464
diff
changeset
|
831 data); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
832 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
833 g_free(soap_body); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
834 } |
23670
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23613
diff
changeset
|
835 |