Mercurial > pidgin.yaz
annotate libpurple/protocols/msn/oim.c @ 27564:3698c7f4d803
On MSN, pop up an "invite message" request similar to oscar, and send that
in the add request. We really should try and move this into the add buddy
dialog instead of an extra prompt.
Fixes #8503.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Mon, 13 Jul 2009 05:01:42 +0000 |
parents | 01f1929d0936 |
children | 867b4cdc01bf |
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 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
24 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
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 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
156 static void msn_oim_request_helper(MsnOimRequestData *data); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
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); |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
175 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
176 if (faultcode_str && g_str_equal(faultcode_str, "q0:BadContextToken")) { |
26278
399776a9ad98
Add some missing newlines in debug messages.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24921
diff
changeset
|
177 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
|
178 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
|
179 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
|
180 (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
|
181 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
|
182 return; |
23537
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
diff
changeset
|
183 |
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
diff
changeset
|
184 } else if (faultcode_str && g_str_equal(faultcode_str, "q0:AuthenticationFailed")) { |
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
diff
changeset
|
185 if (xmlnode_get_child(fault, "detail/RequiredAuthPolicy") != NULL) { |
26278
399776a9ad98
Add some missing newlines in debug messages.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24921
diff
changeset
|
186 purple_debug_warning("msn", "OIM Request Error, Updating token now.\n"); |
23537
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
diff
changeset
|
187 msn_nexus_update_token(data->oim->session->nexus, |
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
diff
changeset
|
188 data->send ? MSN_AUTH_LIVE_SECURE : MSN_AUTH_MESSENGER_WEB, |
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
diff
changeset
|
189 (GSourceFunc)msn_oim_request_helper, data); |
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
diff
changeset
|
190 g_free(faultcode_str); |
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
diff
changeset
|
191 return; |
8fd6a97b9c67
Apparently, when the token expires, OIM requests get a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23535
diff
changeset
|
192 } |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
193 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
194 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
|
195 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
196 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
197 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
|
198 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
|
199 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
|
200 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
|
201 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
202 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
203 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
|
204 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
|
205 { |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
206 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
|
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 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
|
209 /* 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
|
210 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
|
211 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
|
212 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
|
213 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
|
214 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
215 else |
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 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
|
218 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
|
219 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
|
220 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
|
221 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
|
222 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
|
223 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
224 token = msn_nexus_get_token(session->nexus, MSN_AUTH_MESSENGER_WEB); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
225 g_return_if_fail(token != NULL); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
226 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
227 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
|
228 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
|
229 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
230 g_return_if_fail(msn_t != NULL); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
231 g_return_if_fail(msn_p != NULL); |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
232 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
233 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
|
234 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
|
235 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
|
236 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
237 /* 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
|
238 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
|
239 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
|
240 |
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_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
|
242 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
|
243 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
244 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
245 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
|
246 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
|
247 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
|
248 msn_oim_request_cb, 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
|
249 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
250 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
251 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
252 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
|
253 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
|
254 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
|
255 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
|
256 { |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
257 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
|
258 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
|
259 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
|
260 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
|
261 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
|
262 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
|
263 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
|
264 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
|
265 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
|
266 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
267 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
|
268 } |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
269 |
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
270 /**************************************** |
23499
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
271 * OIM GetMetadata request |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
272 * **************************************/ |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
273 static void |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
274 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
|
275 gpointer data) |
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 MsnOim *oim = data; |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
278 |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
279 if (response) { |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
280 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
|
281 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
|
282 } |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
283 } |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
284 |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
285 /* 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
|
286 static void |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
287 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
|
288 { |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
289 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
|
290 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
|
291 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
|
292 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
|
293 } |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
294 |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
295 /**************************************** |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
296 * OIM send SOAP request |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
297 * **************************************/ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
298 /*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
|
299 static gchar * |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
300 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
|
301 { |
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
|
302 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
|
303 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
|
304 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
|
305 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
|
306 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
|
307 |
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 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
|
309 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
|
310 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
|
311 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
|
312 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
|
313 |
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
|
314 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
|
315 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
|
316 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
|
317 |
23595
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23592
diff
changeset
|
318 #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
|
319 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
|
320 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
|
321 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
|
322 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
|
323 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
|
324 } |
23595
fe2e20ff3345
fixes a crash and probably more correct and definitely easier to understand
Ka-Hing Cheung <khc@hxbc.us>
parents:
23592
diff
changeset
|
325 #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
|
326 |
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
|
327 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
|
328 |
20989
2097b1664fa3
Fix some leaks and prevent some unnecessary allocations and frees.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20858
diff
changeset
|
329 g_free(oim_base64); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
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 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
|
332 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
333 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
334 /* |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
335 * Process the send return SOAP string |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
336 * 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
|
337 */ |
20430 | 338 static void |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
339 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
|
340 gpointer data) |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
341 { |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
342 MsnOim *oim = data; |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
343 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
|
344 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
345 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
|
346 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
347 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
|
348 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
|
349 } 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
|
350 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
|
351 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
352 if (faultNode == NULL) { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
353 /*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
|
354 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
|
355 } 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
|
356 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
|
357 |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
358 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
|
359 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
|
360 |
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
|
361 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
|
362 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
|
363 "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
|
364 |
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 (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
|
366 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
|
367 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
|
368 oim->challenge = NULL; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
369 |
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
|
370 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
|
371 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
|
372 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
|
373 msn_oim_send_msg(oim); |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
374 } 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
|
375 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
|
376 "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
|
377 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
|
378 } |
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 { |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
380 char buf[33]; |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
381 |
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 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
|
383 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
|
384 |
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 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
|
386 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
|
387 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
|
388 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
|
389 |
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
|
390 /*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
|
391 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
|
392 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
|
393 msn_oim_send_msg(oim); |
90fd0826c6ce
finish converting the rest of stuff to the new soap api, signing on, getting
Ka-Hing Cheung <khc@hxbc.us>
parents:
20536
diff
changeset
|
394 } |
23535
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
395 } else { |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
396 /* Report the error */ |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
397 const char *str_reason; |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
398 |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
399 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
|
400 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
|
401 "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
|
402 "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
|
403 |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
404 } 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
|
405 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
|
406 "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
|
407 |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
408 } 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
|
409 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
|
410 "encoding error occurred."); |
23535
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
411 |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
412 } else { |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
413 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
|
414 "error occurred."); |
23535
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
415 } |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
416 |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
417 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
|
418 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
|
419 msn_session_report_user(oim->session, msg->to_member, |
fd276936164f
Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23534
diff
changeset
|
420 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
|
421 } |
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
|
422 |
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
|
423 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
|
424 } |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
425 } |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
426 } |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
427 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
428 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
429 void |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
430 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
|
431 const char* friendname, const char *tomember, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
432 const char * msg) |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
433 { |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
434 g_return_if_fail(oim != NULL); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
435 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
436 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
|
437 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
|
438 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
439 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
440 /*post send single message request to oim server*/ |
23300
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22932
diff
changeset
|
441 void |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
442 msn_oim_send_msg(MsnOim *oim) |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
443 { |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
444 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
|
445 char *soap_body; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
446 char *msg_body; |
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 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
|
449 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
|
450 g_return_if_fail(oim_request != NULL); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
451 |
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
|
452 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
|
453 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
454 /* 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
|
455 * 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
|
456 */ |
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
|
457 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
|
458 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
|
459 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
460 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
461 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
|
462 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
|
463 oim_request->from_member, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
464 oim_request->friendname, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
465 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
|
466 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
|
467 oim->challenge ? oim->challenge : "", |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
468 oim->send_seq, |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
469 msg_body); |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
470 |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
471 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
|
472 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
|
473 oim); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
474 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
475 /*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
|
476 if (oim->challenge != NULL) { |
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 } |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
479 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
480 g_free(msg_body); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
481 g_free(soap_body); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
482 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
483 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
484 /**************************************** |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
485 * OIM delete SOAP request |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
486 * **************************************/ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
487 static void |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
488 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
|
489 gpointer data) |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
490 { |
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
|
491 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
|
492 |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
493 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
|
494 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
|
495 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
|
496 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
|
497 |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
498 msn_oim_recv_data_free(rdata); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
499 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
500 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
501 /*Post to get the Offline Instant Message*/ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
502 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
|
503 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
|
504 { |
20536
d52d299cfde3
seems to fix duplicate oim messages for real. The problem was that MSN tells
Ka-Hing Cheung <khc@hxbc.us>
parents:
20535
diff
changeset
|
505 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
|
506 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
|
507 char *soap_body; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
508 |
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
|
509 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
|
510 |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
511 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
|
512 |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
513 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
|
514 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
|
515 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
516 g_free(soap_body); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
517 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
518 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
519 /**************************************** |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
520 * OIM get SOAP request |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
521 * **************************************/ |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
522 /* 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
|
523 * 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
|
524 static time_t |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
525 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
|
526 { |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
527 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
|
528 char *tz_ptr = tz_str; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
529 static const char *months[] = { |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
530 "Jan", "Feb", "Mar", "Apr", "May", "Jun", |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
531 "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
|
532 }; |
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
|
533 time_t tval = 0; |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
534 struct tm t; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
535 memset(&t, 0, sizeof(t)); |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
536 |
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
|
537 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
|
538 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
|
539 |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
540 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
|
541 &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
|
542 &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
|
543 gboolean offset_positive = TRUE; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
544 int tzhrs; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
545 int tzmins; |
23300
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22932
diff
changeset
|
546 |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
547 for (t.tm_mon = 0; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
548 months[t.tm_mon] != NULL && |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
549 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
|
550 if (months[t.tm_mon] != NULL) { |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
551 if (*tz_str == '-') { |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
552 offset_positive = FALSE; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
553 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
|
554 } 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
|
555 tz_ptr++; |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
556 } |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
557 |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
558 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
|
559 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
|
560 #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
|
561 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
|
562 #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
|
563 |
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
|
564 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
|
565 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
|
566 |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
567 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
|
568 |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
569 #ifdef _WIN32 |
20503
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
20501
diff
changeset
|
570 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
|
571 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
|
572 #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
|
573 #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
|
574 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
|
575 #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
|
576 # 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
|
577 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
|
578 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
|
579 # endif |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
580 #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
|
581 #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
|
582 |
6ef43e723595
I think this is the right way to fix timezone. People on Win32 _and_
Ka-Hing Cheung <khc@hxbc.us>
parents:
20496
diff
changeset
|
583 return mktime(&t) + tzoff; |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
584 } |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
585 } |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
586 } |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
587 |
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
|
588 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
|
589 return tval; |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
590 } |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
591 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
592 /*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
|
593 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
|
594 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
|
595 { |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
596 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
|
597 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
|
598 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
|
599 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
|
600 char *decode_msg = NULL; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
601 gsize body_len; |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
602 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
|
603 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
|
604 time_t stamp; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
605 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
606 message = msn_message_new(MSN_MSG_UNKNOWN); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
607 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
608 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
|
609 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
|
610 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
|
611 |
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
|
612 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
|
613 |
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
|
614 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
|
615 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
|
616 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
|
617 |
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
|
618 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
|
619 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
|
620 |
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
|
621 /* 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
|
622 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
|
623 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
|
624 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
|
625 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
|
626 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
|
627 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
|
628 |
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
|
629 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
|
630 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
|
631 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
|
632 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
|
633 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
|
634 } |
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_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
|
636 } |
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
|
637 |
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
|
638 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
|
639 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
|
640 |
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 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
|
642 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
|
643 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
|
644 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
|
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 } 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
|
647 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
|
648 } |
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
|
649 |
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
|
650 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
|
651 |
955bfda56492
Apparently X-OIM-Proxy was not a good way to decide that we received a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24692
diff
changeset
|
652 /* 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
|
653 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
|
654 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
|
655 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
|
656 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
|
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 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
|
659 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
|
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 |
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 (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
|
663 char *start, *end; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
664 |
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
|
665 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
|
666 |
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
|
667 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
|
668 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
|
669 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
|
670 |
25843
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
671 start = strchr(from, '<'); |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
672 if (start != NULL) { |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
673 start++; |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
674 end = strchr(from, '>'); |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
675 if (end != NULL) |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
676 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
|
677 } |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
678 if (passport == NULL) |
d8ce4de7137f
Prevent a NUL ptr deref when the passport is malformed.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24921
diff
changeset
|
679 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
|
680 |
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
|
681 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
|
682 } |
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
|
683 |
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
|
684 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
|
685 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
|
686 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
|
687 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
|
688 |
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
|
689 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
|
690 stamp); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
691 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
692 /*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
|
693 * 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
|
694 */ |
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
|
695 msn_oim_post_delete_msg(rdata); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
696 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
697 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
|
698 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
|
699 msn_message_destroy(message); |
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 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
702 /* Parse the XML data, |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
703 * prepare to report the OIM to user |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
704 */ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
705 static void |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
706 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
|
707 gpointer data) |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
708 { |
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
|
709 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
|
710 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
711 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
|
712 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
|
713 "Body/GetMessageResponse/GetMessageResult"); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
714 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
715 if (msg_node) { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
716 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
|
717 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
|
718 g_free(msg_str); |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
719 } else { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
720 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
|
721 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
|
722 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
|
723 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
|
724 } |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
725 } 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
|
726 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
|
727 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
|
728 } |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
729 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
730 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
731 |
23300
5cdd93dac7a2
Delete trailing whitespace
Mark Doliner <mark@kingant.net>
parents:
22932
diff
changeset
|
732 /* parse the oim XML data |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
733 * 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
|
734 * */ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
735 void |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
736 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
|
737 { |
23499
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
738 xmlnode *node; |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
739 |
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
|
740 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
|
741 |
23499
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
742 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
|
743 /* 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
|
744 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
|
745 } else { |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
746 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
|
747 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
|
748 xmlnode_free(node); |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
749 } |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
750 } |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
751 |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
752 static void |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
753 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
|
754 { |
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
755 xmlnode *mNode; |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
756 xmlnode *iu_node; |
20444
a0d104281002
Compile fix, whoops! Thanks Masca/salinasv.
Stu Tomlinson <stu@nosnilmot.com>
parents:
20443
diff
changeset
|
757 MsnSession *session = oim->session; |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
758 |
23499
7b03d95902d4
References #4382, fixes receiving too many offline messages
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23498
diff
changeset
|
759 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
|
760 |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
761 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
|
762 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
|
763 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
|
764 g_free(xmlmsg); |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
765 return; |
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
766 } |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
767 |
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
|
768 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
|
769 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
770 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
|
771 { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
772 char *unread = xmlnode_get_data(iu_node); |
25891
2260e5b0ca91
*** Plucked rev f9080d0b (khc@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
24921
diff
changeset
|
773 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
|
774 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
|
775 int count = atoi(unread); |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
776 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
777 /* 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
|
778 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
|
779 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
|
780 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
|
781 g_free(unread); |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
782 } |
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
783 |
20490
2d8999540239
mostly fixed offline messaging, still 2 bugs:
Ka-Hing Cheung <khc@hxbc.us>
parents:
20481
diff
changeset
|
784 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
|
785 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
|
786 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
|
787 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
|
788 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
789 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
|
790 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
|
791 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
792 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
|
793 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
|
794 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
795 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
|
796 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
|
797 |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
798 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
|
799 if (rt_node != NULL) { |
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
800 rtime = xmlnode_get_data(rt_node); |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
801 } |
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
|
802 /* 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
|
803 |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
804 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
|
805 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
|
806 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
|
807 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
|
808 } |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
809 |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
810 g_free(passport); |
20439
bee467c81570
A bunch of MSNP14 stuff:
Stu Tomlinson <stu@nosnilmot.com>
parents:
20435
diff
changeset
|
811 g_free(msgid); |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
812 g_free(rtime); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
813 g_free(nickname); |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
814 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
815 } |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
816 |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
817 /*Post to get the Offline Instant Message*/ |
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
818 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
|
819 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
|
820 { |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
821 char *soap_body; |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
822 |
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
|
823 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
|
824 |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
825 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
|
826 |
23514
5f9e6f8b2aea
Correctly update MSN OIM tokens when an invalid token error is
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23509
diff
changeset
|
827 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
|
828 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
|
829 data); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
830 |
20534
7e69275a4eef
oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@hxbc.us>
parents:
20503
diff
changeset
|
831 g_free(soap_body); |
20394
4a099e4d0d09
propagate from branch 'im.pidgin.pidgin' (head 98b6b547b29ea1192b73cc4e1de1e674edef4328)
Richard Laager <rlaager@wiktel.com>
parents:
diff
changeset
|
832 } |
23728
3c0e7b05714e
Fix a leak when requesting OIM's. Also removed some unnecessary
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23658
diff
changeset
|
833 |