Mercurial > pidgin.yaz
annotate libpurple/protocols/msn/oim.c @ 29778:cece09dbb119
merge of 'e9d34ab5e47f22b35fd2d69d61a2c943cc0653db'
and 'fc3d5c2a3920e0875ac235415cea9fc7f5ed780c'
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 18 Feb 2010 08:10:58 +0000 |
parents | 44cbfcaf9e3a |
children | 33b4ae796648 |
rev | line source |
---|---|
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
1 /** |
23300
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22932
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 |
28420
7921a53b94b3
Oops, Elliott correctly pointed out this was wrong...
Paul Aurich <paul@darkrain42.org>
parents:
28399
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" |
23552
711773577380
Clean up some MSN SOAP stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23537
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*/ |
23499
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
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); |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
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:
23658
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; |
22808
f62a4a7fe365
Fix a number of leaks. As far as I can tell, MSNP14 now logs in without
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22804
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; |
22808
f62a4a7fe365
Fix a number of leaks. As far as I can tell, MSNP14 now logs in without
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22804
diff
changeset
|
70 |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
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); |
22808
f62a4a7fe365
Fix a number of leaks. As far as I can tell, MSNP14 now logs in without
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22804
diff
changeset
|
74 |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
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); |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
77 g_queue_free(oim->send_queue); |
22808
f62a4a7fe365
Fix a number of leaks. As far as I can tell, MSNP14 now logs in without
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22804
diff
changeset
|
78 |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
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:
23658
diff
changeset
|
80 msn_oim_recv_data_free((MsnOimRecvData *)oim->oim_list->data); |
22808
f62a4a7fe365
Fix a number of leaks. As far as I can tell, MSNP14 now logs in without
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22804
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; |
23300
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22932
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); |
22808
f62a4a7fe365
Fix a number of leaks. As far as I can tell, MSNP14 now logs in without
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22804
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); |
23300
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22932
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 |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
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:
23658
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:
23658
diff
changeset
|
114 { |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
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:
23658
diff
changeset
|
116 |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
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:
23658
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:
23658
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:
23658
diff
changeset
|
120 |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
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:
23658
diff
changeset
|
122 |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
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:
23658
diff
changeset
|
124 } |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
125 |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
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:
23658
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:
23658
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:
23658
diff
changeset
|
129 { |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
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:
23658
diff
changeset
|
131 } |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
132 |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
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:
23658
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:
23658
diff
changeset
|
135 { |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
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:
23658
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:
23658
diff
changeset
|
138 |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
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:
23658
diff
changeset
|
140 } |
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
141 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
142 /**************************************** |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
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:
23509
diff
changeset
|
144 ****************************************/ |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
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:
23509
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:
23509
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:
23509
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:
23509
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:
23509
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:
23509
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:
23509
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:
23509
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:
23509
diff
changeset
|
154 } MsnOimRequestData; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
155 |
28794
44cbfcaf9e3a
Fix a crash when sending OIMs on MSN. The callback function used after
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28719
diff
changeset
|
156 static gboolean msn_oim_request_helper(MsnOimRequestData *data); |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
157 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
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:
23509
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:
23509
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:
23509
diff
changeset
|
161 { |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
162 MsnOimRequestData *data = (MsnOimRequestData *)req_data; |
23537
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
diff
changeset
|
163 xmlnode *fault = NULL; |
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
diff
changeset
|
164 xmlnode *faultcode = NULL; |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
165 |
23598
2a4341e3d2da
Avoid a crash in OIM processing if the request was cancelled outside of
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23596
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:
23596
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:
23596
diff
changeset
|
168 |
23537
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
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:
23535
diff
changeset
|
170 if (fault) |
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
diff
changeset
|
171 faultcode = xmlnode_get_child(fault, "faultcode"); |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
172 |
23537
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
diff
changeset
|
173 if (faultcode) { |
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
diff
changeset
|
174 gchar *faultcode_str = xmlnode_get_data(faultcode); |
28625
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28420
diff
changeset
|
175 gboolean need_token_update = FALSE; |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
176 |
28625
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28420
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:
28420
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:
28420
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:
28420
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:
28420
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:
28420
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:
28420
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:
28420
diff
changeset
|
184 } |
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28420
diff
changeset
|
185 |
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28420
diff
changeset
|
186 if (need_token_update) { |
26278
399776a9ad98
Add some missing newlines in debug messages.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24921
diff
changeset
|
187 purple_debug_warning("msn", "OIM Request Error, Updating token now.\n"); |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
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:
23509
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:
23509
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:
23509
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:
23509
diff
changeset
|
192 return; |
23537
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
diff
changeset
|
193 |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
194 } |
28625
ca0d55a8943f
Dimmuxx noticed that retrieving OIM didn't work for him until he
Ka-Hing Cheung <khc@hxbc.us>
parents:
28420
diff
changeset
|
195 |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
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:
23509
diff
changeset
|
197 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
198 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
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:
23509
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:
23509
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:
23509
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:
23509
diff
changeset
|
203 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
204 |
28794
44cbfcaf9e3a
Fix a crash when sending OIMs on MSN. The callback function used after
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28719
diff
changeset
|
205 static gboolean |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
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:
23509
diff
changeset
|
207 { |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
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:
23509
diff
changeset
|
209 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
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:
23509
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:
23509
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:
23509
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:
23509
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:
23509
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:
23509
diff
changeset
|
216 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
217 else |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
218 { |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
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:
23509
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:
23509
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:
23509
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:
23509
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:
23509
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:
23509
diff
changeset
|
225 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
226 token = msn_nexus_get_token(session->nexus, MSN_AUTH_MESSENGER_WEB); |
28794
44cbfcaf9e3a
Fix a crash when sending OIMs on MSN. The callback function used after
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28719
diff
changeset
|
227 g_return_val_if_fail(token != NULL, FALSE); |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
228 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
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:
23509
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:
23509
diff
changeset
|
231 |
28794
44cbfcaf9e3a
Fix a crash when sending OIMs on MSN. The callback function used after
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28719
diff
changeset
|
232 g_return_val_if_fail(msn_t != NULL, FALSE); |
44cbfcaf9e3a
Fix a crash when sending OIMs on MSN. The callback function used after
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28719
diff
changeset
|
233 g_return_val_if_fail(msn_p != NULL, FALSE); |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
234 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
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:
23509
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:
23509
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:
23509
diff
changeset
|
238 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
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:
23509
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:
23509
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:
23509
diff
changeset
|
242 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
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:
23509
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:
23509
diff
changeset
|
245 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
246 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
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:
23509
diff
changeset
|
248 msn_soap_message_new(data->action, xmlnode_copy(data->body)), |
23658
860e5e210fc9
Don't print SOAP messages to debug log for "secure" requests. This is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23657
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:
23657
diff
changeset
|
250 msn_oim_request_cb, data); |
28794
44cbfcaf9e3a
Fix a crash when sending OIMs on MSN. The callback function used after
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28719
diff
changeset
|
251 |
44cbfcaf9e3a
Fix a crash when sending OIMs on MSN. The callback function used after
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28719
diff
changeset
|
252 return FALSE; |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
253 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
254 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
255 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
256 static void |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
257 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:
23509
diff
changeset
|
258 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:
23509
diff
changeset
|
259 gpointer cb_data) |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
260 { |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
261 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:
23509
diff
changeset
|
262 data->oim = oim; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
263 data->send = send; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
264 data->action = action; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
265 data->host = host; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
266 data->url = url; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
267 data->body = body; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
268 data->cb = cb; |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
269 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:
23509
diff
changeset
|
270 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
271 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:
23509
diff
changeset
|
272 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
273 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
274 /**************************************** |
23499
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
275 * OIM GetMetadata request |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
276 * **************************************/ |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
277 static void |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
278 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:
23498
diff
changeset
|
279 gpointer data) |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
280 { |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
281 MsnOim *oim = data; |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
282 |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
283 if (response) { |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
284 msn_parse_oim_xml(oim, |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
285 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:
23498
diff
changeset
|
286 } |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
287 } |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
288 |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
289 /* Post to get the OIM Metadata */ |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
290 static void |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
291 msn_oim_get_metadata(MsnOim *oim) |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
292 { |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
293 msn_oim_make_request(oim, FALSE, MSN_OIM_GET_METADATA_ACTION, |
23499
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
294 MSN_OIM_RETRIEVE_HOST, MSN_OIM_RETRIEVE_URL, |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
295 xmlnode_from_str(MSN_OIM_GET_METADATA_TEMPLATE, -1), |
23499
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
296 msn_oim_get_metadata_cb, oim); |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
297 } |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
298 |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
299 /**************************************** |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
300 * OIM send SOAP request |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
301 * **************************************/ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
302 /*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
|
303 static gchar * |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
304 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
|
305 { |
23592
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23564
diff
changeset
|
306 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:
23564
diff
changeset
|
307 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:
23564
diff
changeset
|
308 char *c; |
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23564
diff
changeset
|
309 int len; |
23595
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23592
diff
changeset
|
310 size_t base64_len; |
23592
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23564
diff
changeset
|
311 |
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23564
diff
changeset
|
312 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:
23564
diff
changeset
|
313 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:
23564
diff
changeset
|
314 c = oim_base64 = purple_base64_encode((const guchar *)body, len); |
23595
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23592
diff
changeset
|
315 base64_len = strlen(oim_base64); |
23592
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23564
diff
changeset
|
316 purple_debug_info("msn", "Encoded base64 body:{%s}\n", oim_base64); |
23300
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22932
diff
changeset
|
317 |
23592
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23564
diff
changeset
|
318 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:
23564
diff
changeset
|
319 g_string_printf(oim_body, MSN_OIM_MSG_TEMPLATE, |
23596
73f61c445827
Commit the changes to oim.h that I forgot last time. Fixes #6343,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23595
diff
changeset
|
320 oim->run_id, oim->send_seq); |
23592
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23564
diff
changeset
|
321 |
23595
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23592
diff
changeset
|
322 #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:
23592
diff
changeset
|
323 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:
23592
diff
changeset
|
324 g_string_append_len(oim_body, c, OIM_LINE_LEN); |
23592
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23564
diff
changeset
|
325 g_string_append_c(oim_body, '\n'); |
23595
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23592
diff
changeset
|
326 c += OIM_LINE_LEN; |
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23592
diff
changeset
|
327 base64_len -= OIM_LINE_LEN; |
23592
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23564
diff
changeset
|
328 } |
23595
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23592
diff
changeset
|
329 #undef OIM_LINE_LEN |
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23592
diff
changeset
|
330 |
23592
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23564
diff
changeset
|
331 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:
23564
diff
changeset
|
332 |
20989
2097b1664fa3
Fix some leaks and prevent some unnecessary allocations and frees.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20858
diff
changeset
|
333 g_free(oim_base64); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
334 |
23592
3249c367577b
When sending MSN OIM's, wrap Base64'd text at 76 characters. Because
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23564
diff
changeset
|
335 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
|
336 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
337 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
338 /* |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
339 * Process the send return SOAP string |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
340 * 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
|
341 */ |
20430 | 342 static void |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
343 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
|
344 gpointer data) |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
345 { |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
346 MsnOim *oim = data; |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
347 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
|
348 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
349 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
|
350 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
351 if (response == NULL) { |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
352 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
|
353 } else { |
23498
bca58b00afab
References #4382, replaces usage of msn_soap_xml_get with xmlnode_get_child
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23497
diff
changeset
|
354 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
|
355 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
356 if (faultNode == NULL) { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
357 /*Send OK! return*/ |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
358 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
|
359 } 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
|
360 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
|
361 |
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
|
362 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
|
363 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
|
364 |
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 if (g_str_equal(faultcode_str, "q0:AuthenticationFailed")) { |
23498
bca58b00afab
References #4382, replaces usage of msn_soap_xml_get with xmlnode_get_child
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23497
diff
changeset
|
366 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
|
367 "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
|
368 |
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 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
|
370 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
|
371 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
|
372 oim->challenge = NULL; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
373 |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
374 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
|
375 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
|
376 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
|
377 msn_oim_send_msg(oim); |
28719
3061a0c72b26
Fix an incorrect leak-fix. Thanks Elliott!
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28716
diff
changeset
|
378 msg = NULL; |
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 } else { |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
380 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:
23555
diff
changeset
|
381 "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
|
382 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
|
383 } |
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 } 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
|
385 char buf[33]; |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
386 |
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
|
387 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
|
388 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
|
389 |
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
|
390 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
|
391 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
|
392 g_free(challenge); |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
393 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
|
394 |
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
|
395 /*repost the send*/ |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
396 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
|
397 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
|
398 msn_oim_send_msg(oim); |
28719
3061a0c72b26
Fix an incorrect leak-fix. Thanks Elliott!
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28716
diff
changeset
|
399 msg = NULL; |
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
|
400 } |
23535
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
401 } else { |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
402 /* Report the error */ |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
403 const char *str_reason; |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
404 |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
405 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:
23534
diff
changeset
|
406 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:
23534
diff
changeset
|
407 "unavailable. This normally happens when the " |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
408 "user is blocked or does not exist."); |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
409 |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
410 } 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:
23534
diff
changeset
|
411 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:
23534
diff
changeset
|
412 "are being sent too quickly."); |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
413 |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
414 } 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:
23534
diff
changeset
|
415 str_reason = _("Message was not sent because an unknown " |
23614
a97c1628c803
Fix up some spelling mistakes in MSN oim.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23598
diff
changeset
|
416 "encoding error occurred."); |
23535
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
417 |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
418 } else { |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
419 str_reason = _("Message was not sent because an unknown " |
23614
a97c1628c803
Fix up some spelling mistakes in MSN oim.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23598
diff
changeset
|
420 "error occurred."); |
23535
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
421 } |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
422 |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
423 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:
23534
diff
changeset
|
424 str_reason, PURPLE_MESSAGE_ERROR); |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
425 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:
23534
diff
changeset
|
426 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
|
427 } |
22804
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
|
428 |
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
|
429 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
|
430 } |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
431 } |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
432 } |
28719
3061a0c72b26
Fix an incorrect leak-fix. Thanks Elliott!
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28716
diff
changeset
|
433 |
3061a0c72b26
Fix an incorrect leak-fix. Thanks Elliott!
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28716
diff
changeset
|
434 if (msg) |
3061a0c72b26
Fix an incorrect leak-fix. Thanks Elliott!
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28716
diff
changeset
|
435 msn_oim_free_send_req(msg); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
436 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
437 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
438 void |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
439 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
|
440 const char* friendname, const char *tomember, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
441 const char * msg) |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
442 { |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
443 g_return_if_fail(oim != NULL); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
444 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
445 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
|
446 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
|
447 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
448 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
449 /*post send single message request to oim server*/ |
23300
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22932
diff
changeset
|
450 void |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
451 msn_oim_send_msg(MsnOim *oim) |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
452 { |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
453 MsnOimSendReq *oim_request; |
23492
72aa2ccad28d
fix sending offline message in p15 by sending the correct token. In msnp14,
Ka-Hing Cheung <khc@hxbc.us>
parents:
23488
diff
changeset
|
454 char *soap_body; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
455 char *msg_body; |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
456 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
457 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
|
458 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
|
459 g_return_if_fail(oim_request != NULL); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
460 |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
461 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
|
462 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
463 /* 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
|
464 * 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
|
465 */ |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
466 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:
23555
diff
changeset
|
467 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
|
468 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
469 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
470 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
|
471 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
|
472 oim_request->from_member, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
473 oim_request->friendname, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
474 oim_request->to_member, |
23488
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
|
475 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
|
476 oim->challenge ? oim->challenge : "", |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
477 oim->send_seq, |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
478 msg_body); |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
479 |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
480 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:
23509
diff
changeset
|
481 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:
23509
diff
changeset
|
482 oim); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
483 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
484 /*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
|
485 if (oim->challenge != NULL) { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
486 oim->send_seq++; |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
487 } |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
488 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
489 g_free(msg_body); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
490 g_free(soap_body); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
491 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
492 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
493 /**************************************** |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
494 * OIM delete SOAP request |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
495 * **************************************/ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
496 static void |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
497 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
|
498 gpointer data) |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
499 { |
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
|
500 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
|
501 |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
502 if (response && xmlnode_get_child(response->xml, "Body/Fault") == NULL) |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
503 purple_debug_info("msn", "Delete OIM success\n"); |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
504 else |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
505 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
|
506 |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
507 msn_oim_recv_data_free(rdata); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
508 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
509 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
510 /*Post to get the Offline Instant Message*/ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
511 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
|
512 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
|
513 { |
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
|
514 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
|
515 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
|
516 char *soap_body; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
517 |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
518 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
|
519 |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
520 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
|
521 |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
522 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:
23509
diff
changeset
|
523 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
|
524 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
525 g_free(soap_body); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
526 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
527 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
528 /**************************************** |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
529 * OIM get SOAP request |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
530 * **************************************/ |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
531 /* 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
|
532 * 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
|
533 static time_t |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
534 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
|
535 { |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
536 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
|
537 char *tz_ptr = tz_str; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
538 static const char *months[] = { |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
539 "Jan", "Feb", "Mar", "Apr", "May", "Jun", |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
540 "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
|
541 }; |
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
|
542 time_t tval = 0; |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
543 struct tm t; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
544 memset(&t, 0, sizeof(t)); |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
545 |
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
|
546 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
|
547 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
|
548 |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
549 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
|
550 &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
|
551 &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
|
552 gboolean offset_positive = TRUE; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
553 int tzhrs; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
554 int tzmins; |
23300
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22932
diff
changeset
|
555 |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
556 for (t.tm_mon = 0; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
557 months[t.tm_mon] != NULL && |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
558 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
|
559 if (months[t.tm_mon] != NULL) { |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
560 if (*tz_str == '-') { |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
561 offset_positive = FALSE; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
562 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
|
563 } 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
|
564 tz_ptr++; |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
565 } |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
566 |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
567 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
|
568 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
|
569 #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
|
570 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
|
571 #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
|
572 |
23534
20da64b2e104
Change msn_oim_parse_timestamp to match purple_str_to_time more
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23514
diff
changeset
|
573 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
|
574 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
|
575 |
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
|
576 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
|
577 |
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 _WIN32 |
20503
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
20501
diff
changeset
|
579 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
|
580 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
|
581 #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
|
582 #ifdef HAVE_TM_GMTOFF |
23534
20da64b2e104
Change msn_oim_parse_timestamp to match purple_str_to_time more
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23514
diff
changeset
|
583 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
|
584 #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
|
585 # 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
|
586 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
|
587 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
|
588 # endif |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
589 #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
|
590 #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
|
591 |
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
|
592 return mktime(&t) + tzoff; |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
593 } |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
594 } |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
595 } |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
596 |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
597 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
|
598 return tval; |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
599 } |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
600 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
601 /*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
|
602 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
|
603 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
|
604 { |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
605 MsnMessage *message; |
24680
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:
23728
diff
changeset
|
606 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:
23728
diff
changeset
|
607 const char *from; |
24837
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
608 const char *boundary; |
24681
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
609 char *decode_msg = NULL; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
610 gsize body_len; |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
611 char **tokens; |
24681
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
612 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
|
613 time_t stamp; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
614 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
615 message = msn_message_new(MSN_MSG_UNKNOWN); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
616 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
617 msn_message_parse_payload(message, msg_str, strlen(msg_str), |
24680
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:
23728
diff
changeset
|
618 MSG_OIM_LINE_DEM, MSG_OIM_BODY_DEM); |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
619 purple_debug_info("msn", "oim body:{%s}\n", message->body); |
24681
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
620 |
24837
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
621 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:
24692
diff
changeset
|
622 |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
623 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:
24692
diff
changeset
|
624 char *bounds; |
24681
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
625 char **part; |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
626 |
24837
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
627 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:
24692
diff
changeset
|
628 tokens = g_strsplit(message->body, bounds, 0); |
24681
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
629 |
24692
fbd1a82247ba
For processing mobile OIM's, fix a crash when searching through each part
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24691
diff
changeset
|
630 /* 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:
24691
diff
changeset
|
631 for (part = tokens+1; *part != NULL; part++) { |
24681
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
632 MsnMessage *multipart; |
24692
fbd1a82247ba
For processing mobile OIM's, fix a crash when searching through each part
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24691
diff
changeset
|
633 const char *type; |
24681
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
634 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:
24680
diff
changeset
|
635 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:
24680
diff
changeset
|
636 MSG_OIM_LINE_DEM, MSG_OIM_BODY_DEM); |
24680
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:
23728
diff
changeset
|
637 |
24692
fbd1a82247ba
For processing mobile OIM's, fix a crash when searching through each part
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24691
diff
changeset
|
638 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:
24691
diff
changeset
|
639 if (type && !strcmp(type, "text/plain")) { |
24681
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
640 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:
24680
diff
changeset
|
641 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:
24680
diff
changeset
|
642 break; |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
643 } |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
644 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:
24680
diff
changeset
|
645 } |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
646 |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
647 g_strfreev(tokens); |
24837
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
648 g_free(bounds); |
24681
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
649 |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
650 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:
24680
diff
changeset
|
651 purple_debug_error("msn", "Couldn't find text/plain OIM message.\n"); |
24837
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
652 msn_message_destroy(message); |
24681
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
653 return; |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
654 } |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
655 } else { |
24837
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
656 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:
24692
diff
changeset
|
657 } |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
658 |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
659 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:
24692
diff
changeset
|
660 |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
661 /* 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:
24692
diff
changeset
|
662 if the other side pages you using your phone number */ |
24921
2aa4b88bdcf8
I have no idea if this check is needed, but it looked a bit risky without it
Stu Tomlinson <stu@nosnilmot.com>
parents:
24837
diff
changeset
|
663 if (from && !strncmp(from, "tel:+", 5)) { |
24837
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
664 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:
24692
diff
changeset
|
665 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:
24692
diff
changeset
|
666 |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
667 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:
24692
diff
changeset
|
668 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:
24692
diff
changeset
|
669 } |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
670 |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
671 if (passport == NULL) { |
24681
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
672 char *start, *end; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
673 |
24681
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
674 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:
24680
diff
changeset
|
675 |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
676 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:
24680
diff
changeset
|
677 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:
24680
diff
changeset
|
678 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:
24680
diff
changeset
|
679 |
25843
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
680 start = strchr(from, '<'); |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
681 if (start != NULL) { |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
682 start++; |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
683 end = strchr(from, '>'); |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
684 if (end != NULL) |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
685 passport = g_strndup(start, end - start); |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
686 } |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
687 if (passport == NULL) |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
688 passport = g_strdup(_("Unknown")); |
24681
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
689 |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
690 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:
24680
diff
changeset
|
691 } |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
692 |
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
693 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
|
694 stamp = msn_oim_parse_timestamp(date); |
24681
34258af32335
Add support for receiving MSN offline messages that were sent from a mobile
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24680
diff
changeset
|
695 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:
24680
diff
changeset
|
696 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
|
697 |
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
|
698 serv_got_im(rdata->oim->session->account->gc, passport, decode_msg, 0, |
24680
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:
23728
diff
changeset
|
699 stamp); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
700 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
701 /*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
|
702 * 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
|
703 */ |
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
|
704 msn_oim_post_delete_msg(rdata); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
705 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
706 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
|
707 g_free(decode_msg); |
24837
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
708 msn_message_destroy(message); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
709 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
710 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
711 /* Parse the XML data, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
712 * prepare to report the OIM to user |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
713 */ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
714 static void |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
715 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
|
716 gpointer data) |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
717 { |
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
|
718 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
|
719 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
720 if (response != NULL) { |
23498
bca58b00afab
References #4382, replaces usage of msn_soap_xml_get with xmlnode_get_child
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23497
diff
changeset
|
721 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
|
722 "Body/GetMessageResponse/GetMessageResult"); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
723 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
724 if (msg_node) { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
725 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
|
726 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
|
727 g_free(msg_str); |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
728 } else { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
729 char *str = xmlnode_to_str(response->xml, NULL); |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
730 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
|
731 g_free(str); |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
732 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
|
733 } |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
734 } else { |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
735 purple_debug_info("msn", "Failed to get OIM\n"); |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
736 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
|
737 } |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
738 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
739 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
740 |
23300
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22932
diff
changeset
|
741 /* parse the oim XML data |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
742 * 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
|
743 * */ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
744 void |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
745 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
|
746 { |
23499
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
747 xmlnode *node; |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
748 |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
749 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
|
750 |
23499
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
751 if (!strcmp(xmlmsg, "too-large")) { |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
752 /* 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:
23498
diff
changeset
|
753 msn_oim_get_metadata(oim); |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
754 } else { |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
755 node = xmlnode_from_str(xmlmsg, -1); |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
756 msn_parse_oim_xml(oim, node); |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
757 xmlnode_free(node); |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
758 } |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
759 } |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
760 |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
761 static void |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
762 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:
23498
diff
changeset
|
763 { |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
764 xmlnode *mNode; |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
765 xmlnode *iu_node; |
20444
a0d104281002
Compile fix, whoops! Thanks Masca/salinasv.
Stu Tomlinson <stu@nosnilmot.com>
parents:
20443
diff
changeset
|
766 MsnSession *session = oim->session; |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
767 |
23499
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
768 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
|
769 |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
770 if (strcmp(node->name, "MD") != 0) { |
23499
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
771 char *xmlmsg = xmlnode_to_str(node, NULL); |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
772 purple_debug_info("msn", "WTF is this? %s\n", xmlmsg); |
23499
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
773 g_free(xmlmsg); |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
774 return; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
775 } |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
776 |
23498
bca58b00afab
References #4382, replaces usage of msn_soap_xml_get with xmlnode_get_child
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23497
diff
changeset
|
777 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
|
778 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
779 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
|
780 { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
781 char *unread = xmlnode_get_data(iu_node); |
25891
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
24921
diff
changeset
|
782 const char *passports[2] = { msn_user_get_passport(session->user) }; |
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
24921
diff
changeset
|
783 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
|
784 int count = atoi(unread); |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
785 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
786 /* 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
|
787 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
|
788 purple_notify_emails(session->account->gc, count, FALSE, NULL, |
25891
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
24921
diff
changeset
|
789 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
|
790 g_free(unread); |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
791 } |
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
792 |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
793 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
|
794 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
|
795 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
|
796 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
|
797 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
798 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
|
799 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
|
800 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
801 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
|
802 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
|
803 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
804 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
|
805 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
|
806 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
807 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
|
808 if (rt_node != NULL) { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
809 rtime = xmlnode_get_data(rt_node); |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
810 } |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
811 /* 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
|
812 |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
813 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:
23658
diff
changeset
|
814 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:
23658
diff
changeset
|
815 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
|
816 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
|
817 } |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
818 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
819 g_free(passport); |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
820 g_free(msgid); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
821 g_free(rtime); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
822 g_free(nickname); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
823 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
824 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
825 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
826 /*Post to get the Offline Instant Message*/ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
827 static void |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
828 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
|
829 { |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
830 char *soap_body; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
831 |
23564
7bceac816e19
The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23555
diff
changeset
|
832 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
|
833 |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
834 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
|
835 |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
836 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:
23509
diff
changeset
|
837 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:
23509
diff
changeset
|
838 data); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
839 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
840 g_free(soap_body); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
841 } |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
842 |