libpurple/protocols/myspace/myspace.c

Sat, 22 Mar 2008 04:45:46 +0000

author
Sadrul Habib Chowdhury <sadrul@pidgin.im>
date
Sat, 22 Mar 2008 04:45:46 +0000
branch
vv.ticket34
changeset 22648
e286d795c5f9
parent 22647
bcb89c3964e9
child 23696
1049b744d8c8
permissions
-rw-r--r--

Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
It's now possible to initiate an audio session, sometimes. It's somewhat
buggy.
Some other issues also need to be resolved:
* Properly get rid of the compile warnings
* Rename the serv_ functions with proper namespacing.
* Possibly rename the purple_media_ functions that don't deal with a
PurpleMedia (e.g. purple_media_audio_init_src) to something different,
e.g. purple_media_util_, or even purple_gst_util etc.

References #34.

19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1 /* MySpaceIM Protocol Plugin
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3 * \author Jeff Connelly
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
4 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
5 * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
6 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
7 * Based on Purple's "C Plugin HOWTO" hello world example.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
8 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
9 * Code also drawn from mockprpl:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
10 * http://snarfed.org/space/purple+mock+protocol+plugin
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
11 * Copyright (C) 2004-2007, Ryan Barrett <mockprpl@ryanb.org>
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
12 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
13 * and some constructs also based on existing Purple plugins, which are:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
14 * Copyright (C) 2003, Robbert Haarman <purple@inglorion.net>
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
15 * Copyright (C) 2003, Ethan Blanton <eblanton@cs.purdue.edu>
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
16 * Copyright (C) 2000-2003, Rob Flynn <rob@tgflinux.com>
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
17 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
18 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
19 * This program is free software; you can redistribute it and/or modify
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
20 * it under the terms of the GNU General Public License as published by
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
21 * the Free Software Foundation; either version 2 of the License, or
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
22 * (at your option) any later version.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
23 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
24 * This program is distributed in the hope that it will be useful,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
25 * but WITHOUT ANY WARRANTY; without even the implied warranty of
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
26 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
27 * GNU General Public License for more details.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
28 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
29 * You should have received a copy of the GNU General Public License
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
30 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19839
diff changeset
31 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
32 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
33
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
34 #define PURPLE_PLUGIN
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
35
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
36 #include "myspace.h"
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
37
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
38 /* Internal functions */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
39
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
40 #ifdef MSIM_DEBUG_MSG
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
41 static void print_hash_item(gpointer key, gpointer value, gpointer user_data);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
42 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
43
19619
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
44 static int msim_send_really_raw(PurpleConnection *gc, const char *buf, int total_bytes);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
45 static gboolean msim_login_challenge(MsimSession *session, MsimMessage *msg);
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
46 static gchar *msim_compute_login_response(const gchar nonce[2 * NONCE_SIZE], const gchar *email, const gchar *password, guint *response_len);
19619
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
47
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
48 static gboolean msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
49 static gboolean msim_incoming_bm(MsimSession *session, MsimMessage *msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
50 static gboolean msim_incoming_status(MsimSession *session, MsimMessage *msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
51 static gboolean msim_incoming_im(MsimSession *session, MsimMessage *msg);
19616
017838ce7393 In msimprpl, move zap-related code to a separate module.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19615
diff changeset
52 /* static gboolean msim_incoming_zap(MsimSession *session, MsimMessage *msg); - in zap.c */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
53 static gboolean msim_incoming_action(MsimSession *session, MsimMessage *msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
54 static gboolean msim_incoming_media(MsimSession *session, MsimMessage *msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
55 static gboolean msim_incoming_unofficial_client(MsimSession *session,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
56 MsimMessage *msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
57
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
58 #ifdef MSIM_SEND_CLIENT_VERSION
19619
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
59 static gboolean msim_send_unofficial_client(MsimSession *session, gchar *username);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
60 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
61
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
62 static void msim_get_info_cb(MsimSession *session, MsimMessage *userinfo, gpointer data);
19619
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
63
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
64 static void msim_set_status_code(MsimSession *session, guint code, gchar *statstring);
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
65
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
66 static gboolean msim_process_server_info(MsimSession *session, MsimMessage *msg);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
67 static gboolean msim_web_challenge(MsimSession *session, MsimMessage *msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
68 static gboolean msim_process_reply(MsimSession *session, MsimMessage *msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
69
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
70 static gboolean msim_preprocess_incoming(MsimSession *session, MsimMessage *msg);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
71
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
72 #ifdef MSIM_USE_KEEPALIVE
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
73 static gboolean msim_check_alive(gpointer data);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
74 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
75
22433
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
76 static gboolean msim_is_username_set(MsimSession *session, MsimMessage *msg);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
77
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
78 static gboolean msim_process(MsimSession *session, MsimMessage *msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
79
19619
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
80 static MsimMessage *msim_do_postprocessing(MsimMessage *msg, const gchar *uid_field_name, const gchar *uid_before, guint uid);
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
81 static void msim_postprocess_outgoing_cb(MsimSession *session, MsimMessage *userinfo, gpointer data);
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
82 static gboolean msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg, const gchar *username, const gchar *uid_field_name, const gchar *uid_before);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
83
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
84 static gboolean msim_error(MsimSession *session, MsimMessage *msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
85
19619
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
86 static void msim_check_inbox_cb(MsimSession *session, MsimMessage *userinfo, gpointer data);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
87 static gboolean msim_check_inbox(gpointer data);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
88
19619
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
89 static void msim_input_cb(gpointer gc_uncasted, gint source, PurpleInputCondition cond);
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
90
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
91
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
92 static void msim_connect_cb(gpointer data, gint source, const gchar *error_message);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
93
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
94 static void msim_import_friends(PurplePluginAction *action);
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
95 static void msim_import_friends_cb(MsimSession *session, MsimMessage *reply, gpointer user_data);
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
96 static gboolean msim_get_contact_list(MsimSession *session, int what_to_do_after);
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
97
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
98 static gboolean msim_uri_handler(const gchar *proto, const gchar *cmd, GHashTable *params);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
99 static void msim_uri_handler_addContact_cb(MsimSession *session, MsimMessage *userinfo, gpointer data);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
100 static void msim_uri_handler_sendIM_cb(MsimSession *session, MsimMessage *userinfo, gpointer data);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
101
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
102 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
103 * Load the plugin.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
104 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
105 gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
106 msim_load(PurplePlugin *plugin)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
107 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
108 /* If compiled to use RC4 from libpurple, check if it is really there. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
109 if (!purple_ciphers_find_cipher("rc4")) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
110 purple_debug_error("msim", "rc4 not in libpurple, but it is required - not loading MySpaceIM plugin!\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
111 purple_notify_error(plugin, _("Missing Cipher"),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
112 _("The RC4 cipher could not be found"),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
113 _("Upgrade "
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
114 "to a libpurple with RC4 support (>= 2.0.1). MySpaceIM "
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
115 "plugin will not be loaded."));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
116 return FALSE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
117 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
118 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
119 }
22346
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
120
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
121 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
122 * Get possible user status types. Based on mockprpl.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
123 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
124 * @return GList of status types.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
125 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
126 GList *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
127 msim_status_types(PurpleAccount *acct)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
128 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
129 GList *types;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
130 PurpleStatusType *status;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
131
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
132 purple_debug_info("myspace", "returning status types\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
133
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
134 types = NULL;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
135
22346
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
136 /* Statuses are almost all the same. Define a macro to reduce code repetition. */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
137 #define _MSIM_ADD_NEW_STATUS(prim) status = \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
138 purple_status_type_new_with_attrs( \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
139 prim, /* PurpleStatusPrimitive */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
140 NULL, /* id - use default */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
141 NULL, /* name - use default */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
142 TRUE, /* savable */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
143 TRUE, /* user_settable */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
144 FALSE, /* not independent */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
145 \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
146 /* Attributes - each status can have a message. */ \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
147 "message", \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
148 _("Message"), \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
149 purple_value_new(PURPLE_TYPE_STRING), \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
150 NULL); \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
151 \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
152 \
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
153 types = g_list_append(types, status)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
154
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
155
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
156 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
157 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AWAY);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
158 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_OFFLINE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
159 _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_INVISIBLE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
160
22358
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
161 /* Except tune status is different... */
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
162 status = purple_status_type_new_with_attrs(
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
163 PURPLE_STATUS_TUNE, /* primitive */
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
164 "tune", /* ID */
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
165 NULL, /* name - use default */
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
166 TRUE, /* savable */
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
167 TRUE, /* should be user_settable some day */
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
168 TRUE, /* independent */
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
169
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
170 PURPLE_TUNE_ARTIST, _("Artist"), purple_value_new(PURPLE_TYPE_STRING),
22395
1778f18e3496 purple_status_type_new_with_attrs() must be NULL terminated. Finally all
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22358
diff changeset
171 PURPLE_TUNE_TITLE, _("Title"), purple_value_new(PURPLE_TYPE_STRING),
1778f18e3496 purple_status_type_new_with_attrs() must be NULL terminated. Finally all
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22358
diff changeset
172 NULL);
22358
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
173
13b8409aea48 In msimprpl, use a PURPLE_STATUS_TUNE presence type to hold the "now playing"
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22355
diff changeset
174 types = g_list_append(types, status);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
175
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
176 return types;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
177 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
178
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
179 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
180 * Return the icon name for a buddy and account.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
181 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
182 * @param acct The account to find the icon for, or NULL for protocol icon.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
183 * @param buddy The buddy to find the icon for, or NULL for the account icon.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
184 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
185 * @return The base icon name string.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
186 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
187 const gchar *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
188 msim_list_icon(PurpleAccount *acct, PurpleBuddy *buddy)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
189 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
190 /* Use a MySpace icon submitted by hbons at
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
191 * http://developer.pidgin.im/wiki/MySpaceIM. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
192 return "myspace";
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
193 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
194
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
195 #ifdef MSIM_DEBUG_MSG
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
196 static void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
197 print_hash_item(gpointer key, gpointer value, gpointer user_data)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
198 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
199 purple_debug_info("msim", "%s=%s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
200 key ? (gchar *)key : "(NULL)",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
201 value ? (gchar *)value : "(NULL)");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
202 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
203 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
204
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
205 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
206 * Send raw data (given as a NUL-terminated string) to the server.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
207 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
208 * @param session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
209 * @param msg The raw data to send, in a NUL-terminated string.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
210 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
211 * @return TRUE if succeeded, FALSE if not.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
212 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
213 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
214 gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
215 msim_send_raw(MsimSession *session, const gchar *msg)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
216 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
217 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
218 g_return_val_if_fail(msg != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
219
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
220 purple_debug_info("msim", "msim_send_raw: writing <%s>\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
221
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
222 return msim_send_really_raw(session->gc, msg, strlen(msg)) ==
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
223 strlen(msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
224 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
225
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
226 /** Send raw data to the server, possibly with embedded NULs.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
227 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
228 * Used in prpl_info struct, so that plugins can have the most possible
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
229 * control of what is sent over the connection. Inside this prpl,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
230 * msim_send_raw() is used, since it sends NUL-terminated strings (easier).
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
231 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
232 * @param gc PurpleConnection
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
233 * @param buf Buffer to send
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
234 * @param total_bytes Size of buffer to send
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
235 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
236 * @return Bytes successfully sent, or -1 on error.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
237 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
238 static int
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
239 msim_send_really_raw(PurpleConnection *gc, const char *buf, int total_bytes)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
240 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
241 int total_bytes_sent;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
242 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
243
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
244 g_return_val_if_fail(gc != NULL, -1);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
245 g_return_val_if_fail(buf != NULL, -1);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
246 g_return_val_if_fail(total_bytes >= 0, -1);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
247
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
248 session = (MsimSession *)gc->proto_data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
249
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
250 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
251
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
252 /* Loop until all data is sent, or a failure occurs. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
253 total_bytes_sent = 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
254 do {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
255 int bytes_sent;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
256
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
257 bytes_sent = send(session->fd, buf + total_bytes_sent,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
258 total_bytes - total_bytes_sent, 0);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
259
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
260 if (bytes_sent < 0) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
261 purple_debug_info("msim", "msim_send_raw(%s): send() failed: %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
262 buf, g_strerror(errno));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
263 return total_bytes_sent;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
264 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
265 total_bytes_sent += bytes_sent;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
266
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
267 } while(total_bytes_sent < total_bytes);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
268
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
269 return total_bytes_sent;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
270 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
271
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
272
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
273 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
274 * Start logging in to the MSIM servers.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
275 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
276 * @param acct Account information to use to login.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
277 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
278 void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
279 msim_login(PurpleAccount *acct)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
280 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
281 PurpleConnection *gc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
282 const gchar *host;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
283 int port;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
284
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
285 g_return_if_fail(acct != NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
286 g_return_if_fail(acct->username != NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
287
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
288 purple_debug_info("msim", "logging in %s\n", acct->username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
289
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
290 gc = purple_account_get_connection(acct);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
291 gc->proto_data = msim_session_new(acct);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
292 gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_URLDESC;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
293
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
294 /* 1. connect to server */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
295 purple_connection_update_progress(gc, _("Connecting"),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
296 0, /* which connection step this is */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
297 4); /* total number of steps */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
298
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
299 host = purple_account_get_string(acct, "server", MSIM_SERVER);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
300 port = purple_account_get_int(acct, "port", MSIM_PORT);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
301
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
302 /* From purple.sf.net/api:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
303 * """Note that this function name can be misleading--although it is called
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
304 * "proxy connect," it is used for establishing any outgoing TCP connection,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
305 * whether through a proxy or not.""" */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
306
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
307 /* Calls msim_connect_cb when connected. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
308 if (!purple_proxy_connect(gc, acct, host, port, msim_connect_cb, gc)) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
309 /* TODO: try other ports if in auto mode, then save
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
310 * working port and try that first next time. */
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
311 purple_connection_error_reason (gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
312 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20449
7ee73f97ee74 purple_connection_error_reason-ify myspace
Will Thompson <resiak@pidgin.im>
parents: 20319
diff changeset
313 _("Couldn't create socket"));
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
314 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
315 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
316 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
317
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
318 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
319 * Process a login challenge, sending a response.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
320 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
321 * @param session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
322 * @param msg Login challenge message.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
323 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
324 * @return TRUE if successful, FALSE if not
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
325 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
326 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
327 msim_login_challenge(MsimSession *session, MsimMessage *msg)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
328 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
329 PurpleAccount *account;
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
330 gchar *response;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
331 guint response_len;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
332 gchar *nc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
333 gsize nc_len;
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
334 gboolean ret;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
335
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
336 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
337 g_return_val_if_fail(msg != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
338
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
339 g_return_val_if_fail(msim_msg_get_binary(msg, "nc", &nc, &nc_len), FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
340
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
341 account = session->account;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
342
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
343 g_return_val_if_fail(account != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
344
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
345 purple_connection_update_progress(session->gc, _("Reading challenge"), 1, 4);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
346
22622
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22614
diff changeset
347 purple_debug_info("msim", "nc is %" G_GSIZE_FORMAT
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22614
diff changeset
348 " bytes, decoded\n", nc_len);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
349
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
350 if (nc_len != MSIM_AUTH_CHALLENGE_LENGTH) {
22622
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22614
diff changeset
351 purple_debug_info("msim", "bad nc length: %" G_GSIZE_MODIFIER
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22614
diff changeset
352 "x != 0x%x\n", nc_len, MSIM_AUTH_CHALLENGE_LENGTH);
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
353 purple_connection_error_reason (session->gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
354 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20449
7ee73f97ee74 purple_connection_error_reason-ify myspace
Will Thompson <resiak@pidgin.im>
parents: 20319
diff changeset
355 _("Unexpected challenge length from server"));
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
356 return FALSE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
357 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
358
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
359 purple_connection_update_progress(session->gc, _("Logging in"), 2, 4);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
360
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
361 response_len = 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
362 response = msim_compute_login_response(nc, account->username, account->password, &response_len);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
363
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
364 g_free(nc);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
365
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
366 ret = msim_send(session,
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
367 "login2", MSIM_TYPE_INTEGER, MSIM_AUTH_ALGORITHM,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
368 /* This is actually user's email address. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
369 "username", MSIM_TYPE_STRING, g_strdup(account->username),
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
370 /* GString will be freed in msim_msg_free() in msim_send(). */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
371 "response", MSIM_TYPE_BINARY, g_string_new_len(response, response_len),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
372 "clientver", MSIM_TYPE_INTEGER, MSIM_CLIENT_VERSION,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
373 "langid", MSIM_TYPE_INTEGER, MSIM_LANGUAGE_ID_ENGLISH,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
374 "imlang", MSIM_TYPE_STRING, g_strdup(MSIM_LANGUAGE_NAME_ENGLISH),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
375 "reconn", MSIM_TYPE_INTEGER, 0,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
376 "status", MSIM_TYPE_INTEGER, 100,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
377 "id", MSIM_TYPE_INTEGER, 1,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
378 NULL);
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
379
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
380 g_free(response);
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
381
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
382 return ret;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
383 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
384
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
385 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
386 * Compute the base64'd login challenge response based on username, password, nonce, and IPs.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
387 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
388 * @param nonce The base64 encoded nonce ('nc') field from the server.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
389 * @param email User's email address (used as login name).
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
390 * @param password User's cleartext password.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
391 * @param response_len Will be written with response length.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
392 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
393 * @return Binary login challenge response, ready to send to the server.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
394 * Must be g_free()'d when finished. NULL if error.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
395 */
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
396 static gchar *
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
397 msim_compute_login_response(const gchar nonce[2 * NONCE_SIZE],
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
398 const gchar *email, const gchar *password, guint *response_len)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
399 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
400 PurpleCipherContext *key_context;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
401 PurpleCipher *sha1;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
402 PurpleCipherContext *rc4;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
403
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
404 guchar hash_pw[HASH_SIZE];
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
405 guchar key[HASH_SIZE];
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
406 gchar *password_utf16le, *password_utf8_lc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
407 guchar *data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
408 guchar *data_out;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
409 size_t data_len, data_out_len;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
410 gsize conv_bytes_read, conv_bytes_written;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
411 GError *conv_error;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
412 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
413 int i;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
414 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
415
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
416 g_return_val_if_fail(nonce != NULL, NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
417 g_return_val_if_fail(email != NULL, NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
418 g_return_val_if_fail(password != NULL, NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
419 g_return_val_if_fail(response_len != NULL, NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
420
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
421 /* Convert password to lowercase (required for passwords containing
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
422 * uppercase characters). MySpace passwords are lowercase,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
423 * see ticket #2066. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
424 password_utf8_lc = g_utf8_strdown(password, -1);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
425
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
426 /* Convert ASCII password to UTF16 little endian */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
427 purple_debug_info("msim", "converting password to UTF-16LE\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
428 conv_error = NULL;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
429 password_utf16le = g_convert(password_utf8_lc, -1, "UTF-16LE", "UTF-8",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
430 &conv_bytes_read, &conv_bytes_written, &conv_error);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
431 g_free(password_utf8_lc);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
432
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
433 g_return_val_if_fail(conv_bytes_read == strlen(password), NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
434
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
435 if (conv_error != NULL) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
436 purple_debug_error("msim",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
437 "g_convert password UTF8->UTF16LE failed: %s",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
438 conv_error->message);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
439 g_error_free(conv_error);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
440 return NULL;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
441 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
442
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
443 /* Compute password hash */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
444 purple_cipher_digest_region("sha1", (guchar *)password_utf16le,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
445 conv_bytes_written, sizeof(hash_pw), hash_pw, NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
446 g_free(password_utf16le);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
447
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
448 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
449 purple_debug_info("msim", "pwhash = ");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
450 for (i = 0; i < sizeof(hash_pw); i++)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
451 purple_debug_info("msim", "%.2x ", hash_pw[i]);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
452 purple_debug_info("msim", "\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
453 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
454
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
455 /* key = sha1(sha1(pw) + nonce2) */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
456 sha1 = purple_ciphers_find_cipher("sha1");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
457 key_context = purple_cipher_context_new(sha1, NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
458 purple_cipher_context_append(key_context, hash_pw, HASH_SIZE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
459 purple_cipher_context_append(key_context, (guchar *)(nonce + NONCE_SIZE), NONCE_SIZE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
460 purple_cipher_context_digest(key_context, sizeof(key), key, NULL);
20402
a3a7cbfe1c1c Fix a few memory leaks in #3281 (details in ticket).
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20319
diff changeset
461 purple_cipher_context_destroy(key_context);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
462
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
463 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
464 purple_debug_info("msim", "key = ");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
465 for (i = 0; i < sizeof(key); i++) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
466 purple_debug_info("msim", "%.2x ", key[i]);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
467 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
468 purple_debug_info("msim", "\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
469 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
470
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
471 rc4 = purple_cipher_context_new_by_name("rc4", NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
472
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
473 /* Note: 'key' variable is 0x14 bytes (from SHA-1 hash),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
474 * but only first 0x10 used for the RC4 key. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
475 purple_cipher_context_set_option(rc4, "key_len", (gpointer)0x10);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
476 purple_cipher_context_set_key(rc4, key);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
477
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
478 /* TODO: obtain IPs of network interfaces */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
479
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
480 /* rc4 encrypt:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
481 * nonce1+email+IP list */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
482
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
483 data_len = NONCE_SIZE + strlen(email) + MSIM_LOGIN_IP_LIST_LEN;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
484 data = g_new0(guchar, data_len);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
485 memcpy(data, nonce, NONCE_SIZE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
486 memcpy(data + NONCE_SIZE, email, strlen(email));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
487 memcpy(data + NONCE_SIZE + strlen(email), MSIM_LOGIN_IP_LIST, MSIM_LOGIN_IP_LIST_LEN);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
488
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
489 data_out = g_new0(guchar, data_len);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
490
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
491 purple_cipher_context_encrypt(rc4, (const guchar *)data,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
492 data_len, data_out, &data_out_len);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
493 purple_cipher_context_destroy(rc4);
20726
d9f1332b0c80 Remove g_assert() from msimprpl.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20720
diff changeset
494 g_free(data);
d9f1332b0c80 Remove g_assert() from msimprpl.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20720
diff changeset
495
d9f1332b0c80 Remove g_assert() from msimprpl.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20720
diff changeset
496 if (data_out_len != data_len) {
d9f1332b0c80 Remove g_assert() from msimprpl.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20720
diff changeset
497 purple_debug_info("msim", "msim_compute_login_response: "
22622
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22614
diff changeset
498 "data length mismatch: %" G_GSIZE_FORMAT " != %"
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22614
diff changeset
499 G_GSIZE_FORMAT "\n", data_out_len, data_len);
20726
d9f1332b0c80 Remove g_assert() from msimprpl.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20720
diff changeset
500 }
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
501
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
502 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
503 purple_debug_info("msim", "response=<%s>\n", data_out);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
504 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
506 *response_len = data_out_len;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
507
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
508 return (gchar *)data_out;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
509 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
510
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
511 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
512 * Schedule an IM to be sent once the user ID is looked up.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
513 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
514 * @param gc Connection.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
515 * @param who A user id, email, or username to send the message to.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
516 * @param message Instant message text to send.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
517 * @param flags Flags.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
518 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
519 * @return 1 if successful or postponed, -1 if failed
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
520 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
521 * Allows sending to a user by username, email address, or userid. If
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
522 * a username or email address is given, the userid must be looked up.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
523 * This function does that by calling msim_postprocess_outgoing().
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
524 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
525 int
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
526 msim_send_im(PurpleConnection *gc, const gchar *who, const gchar *message,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
527 PurpleMessageFlags flags)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
528 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
529 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
530 gchar *message_msim;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
531 int rc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
532
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
533 g_return_val_if_fail(gc != NULL, -1);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
534 g_return_val_if_fail(who != NULL, -1);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
535 g_return_val_if_fail(message != NULL, -1);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
536
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
537 /* 'flags' has many options, not used here. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
538
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
539 session = (MsimSession *)gc->proto_data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
540
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
541 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
542
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
543 message_msim = html_to_msim_markup(session, message);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
544
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
545 if (msim_send_bm(session, who, message_msim, MSIM_BM_INSTANT)) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
546 /* Return 1 to have Purple show this IM as being sent, 0 to not. I always
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
547 * return 1 even if the message could not be sent, since I don't know if
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
548 * it has failed yet--because the IM is only sent after the userid is
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
549 * retrieved from the server (which happens after this function returns).
22346
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
550 * If an error does occur, it should be logged to the IM window.
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
551 */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
552 rc = 1;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
553 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
554 rc = -1;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
555 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
556
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
557 g_free(message_msim);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
558
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
559 return rc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
560 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
561
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
562 /** Send a buddy message of a given type.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
563 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
564 * @param session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
565 * @param who Username to send message to.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
566 * @param text Message text to send. Not freed; will be copied.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
567 * @param type A MSIM_BM_* constant.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
568 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
569 * @return TRUE if success, FALSE if fail.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
570 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
571 * Buddy messages ('bm') include instant messages, action messages, status messages, etc.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
572 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
573 */
19616
017838ce7393 In msimprpl, move zap-related code to a separate module.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19615
diff changeset
574 gboolean
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
575 msim_send_bm(MsimSession *session, const gchar *who, const gchar *text,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
576 int type)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
577 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
578 gboolean rc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
579 MsimMessage *msg;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
580 const gchar *from_username;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
581
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
582 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
583 g_return_val_if_fail(who != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
584 g_return_val_if_fail(text != NULL, FALSE);
22346
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
585
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
586 from_username = session->account->username;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
587
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
588 g_return_val_if_fail(from_username != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
589
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
590 purple_debug_info("msim", "sending %d message from %s to %s: %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
591 type, from_username, who, text);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
592
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
593 msg = msim_msg_new(
22346
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
594 "bm", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(type),
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
595 "sesskey", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(session->sesskey),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
596 /* 't' will be inserted here */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
597 "cv", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(MSIM_CLIENT_VERSION),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
598 "msg", MSIM_TYPE_STRING, g_strdup(text),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
599 NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
600
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
601 rc = msim_postprocess_outgoing(session, msg, who, "t", "cv");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
602
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
603 msim_msg_free(msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
604
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
605 return rc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
606 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
607
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
608
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
609 /** Record the client version in the buddy list, from an incoming message. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
610 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
611 msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
612 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
613 gchar *username, *cv;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
614 gboolean ret;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
615 MsimUser *user;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
616
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
617 username = msim_msg_get_string(msg, "_username");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
618 cv = msim_msg_get_string(msg, "cv");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
619
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
620 g_return_val_if_fail(username != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
621 if (!cv) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
622 /* No client version to record, don't worry about it. */
20815
a6c11702ad56 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20747
diff changeset
623 g_free(username);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
624 return FALSE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
625 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
626
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
627 user = msim_find_user(session, username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
628
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
629 if (user) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
630 user->client_cv = atol(cv);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
631 ret = TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
632 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
633 ret = FALSE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
634 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
635
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
636 g_free(username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
637 g_free(cv);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
638
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
639 return ret;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
640 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
641
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
642 /** Handle an incoming buddy message. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
643 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
644 msim_incoming_bm(MsimSession *session, MsimMessage *msg)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
645 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
646 guint bm;
22349
96ff0e5a1d2e merge of '16745d78d4ae06c7c49622d121ae53e40a85586e'
Mark Doliner <markdoliner@pidgin.im>
parents: 22317 22348
diff changeset
647
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
648 bm = msim_msg_get_integer(msg, "bm");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
649
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
650 msim_incoming_bm_record_cv(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
651
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
652 switch (bm) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
653 case MSIM_BM_STATUS:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
654 return msim_incoming_status(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
655 case MSIM_BM_INSTANT:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
656 return msim_incoming_im(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
657 case MSIM_BM_ACTION:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
658 return msim_incoming_action(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
659 case MSIM_BM_MEDIA:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
660 return msim_incoming_media(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
661 case MSIM_BM_UNOFFICIAL_CLIENT:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
662 return msim_incoming_unofficial_client(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
663 default:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
664 /* Not really an IM, but show it for informational
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
665 * purposes during development. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
666 return msim_incoming_im(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
667 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
668 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
669
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
670 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
671 * Handle an incoming instant message.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
672 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
673 * @param session The session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
674 * @param msg Message from the server, containing 'f' (userid from) and 'msg'.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
675 * Should also contain username in _username from preprocessing.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
676 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
677 * @return TRUE if successful.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
678 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
679 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
680 msim_incoming_im(MsimSession *session, MsimMessage *msg)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
681 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
682 gchar *username, *msg_msim_markup, *msg_purple_markup;
19730
cb50f6696994 Use the sent timestamp in incoming instant messages instead of the current
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19644
diff changeset
683 time_t time_received;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
684
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
685 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
686 g_return_val_if_fail(msg != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
687
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
688 username = msim_msg_get_string(msg, "_username");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
689 g_return_val_if_fail(username != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
690
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
691 msg_msim_markup = msim_msg_get_string(msg, "msg");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
692 g_return_val_if_fail(msg_msim_markup != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
693
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
694 msg_purple_markup = msim_markup_to_html(session, msg_msim_markup);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
695 g_free(msg_msim_markup);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
696
19730
cb50f6696994 Use the sent timestamp in incoming instant messages instead of the current
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19644
diff changeset
697 time_received = msim_msg_get_integer(msg, "date");
cb50f6696994 Use the sent timestamp in incoming instant messages instead of the current
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19644
diff changeset
698 if (!time_received) {
cb50f6696994 Use the sent timestamp in incoming instant messages instead of the current
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19644
diff changeset
699 time_received = time(NULL);
cb50f6696994 Use the sent timestamp in incoming instant messages instead of the current
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19644
diff changeset
700 }
cb50f6696994 Use the sent timestamp in incoming instant messages instead of the current
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19644
diff changeset
701
cb50f6696994 Use the sent timestamp in incoming instant messages instead of the current
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19644
diff changeset
702 serv_got_im(session->gc, username, msg_purple_markup, PURPLE_MESSAGE_RECV, time_received);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
703
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
704 g_free(username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
705 g_free(msg_purple_markup);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
706
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
707 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
708 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
709
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
710 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
711 * Process unrecognized information.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
712 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
713 * @param session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
714 * @param msg An MsimMessage that was unrecognized, or NULL.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
715 * @param note Information on what was unrecognized, or NULL.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
716 */
19619
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
717 void
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
718 msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
719 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
720 /* TODO: Some more context, outwardly equivalent to a backtrace,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
721 * for helping figure out what this msg is for. What was going on?
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
722 * But not too much information so that a user
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
723 * posting this dump reveals confidential information.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
724 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
725
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
726 /* TODO: dump unknown msgs to file, so user can send them to me
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
727 * if they wish, to help add support for new messages (inspired
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
728 * by Alexandr Shutko, who maintains OSCAR protocol documentation).
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
729 *
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
730 * Filed enhancement ticket for libpurple as #4688.
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
731 */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
732
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
733 purple_debug_info("msim", "Unrecognized data on account for %s\n",
19530
6ced4ef3e757 MySpace added a new field, LastImageUpdated. Save it in MsimUser.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19529
diff changeset
734 (session && session->account && session->account->username) ?
6ced4ef3e757 MySpace added a new field, LastImageUpdated. Save it in MsimUser.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19529
diff changeset
735 session->account->username : "(NULL)");
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
736 if (note) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
737 purple_debug_info("msim", "(Note: %s)\n", note);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
738 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
739
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
740 if (msg) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
741 msim_msg_dump("Unrecognized message dump: %s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
742 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
743 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
744
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
745 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
746 * Handle an incoming action message.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
747 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
748 * @param session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
749 * @param msg
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
750 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
751 * @return TRUE if successful.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
752 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
753 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
754 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
755 msim_incoming_action(MsimSession *session, MsimMessage *msg)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
756 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
757 gchar *msg_text, *username;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
758 gboolean rc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
759
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
760 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
761 g_return_val_if_fail(msg != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
762
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
763 msg_text = msim_msg_get_string(msg, "msg");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
764 g_return_val_if_fail(msg_text != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
765
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
766 username = msim_msg_get_string(msg, "_username");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
767 g_return_val_if_fail(username != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
768
22622
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22614
diff changeset
769 purple_debug_info("msim", "msim_incoming_action: action <%s> from <%s>\n",
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
770 msg_text, username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
771
19606
afc90bd82e6d In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19605
diff changeset
772 if (g_str_equal(msg_text, "%typing%")) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
773 serv_got_typing(session->gc, username, 0, PURPLE_TYPING);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
774 rc = TRUE;
19606
afc90bd82e6d In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19605
diff changeset
775 } else if (g_str_equal(msg_text, "%stoptyping%")) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
776 serv_got_typing_stopped(session->gc, username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
777 rc = TRUE;
22352
9e138738d72b Fix zap functionality in MySpaceIM.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22349
diff changeset
778 } else if (strstr(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_")) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
779 rc = msim_incoming_zap(session, msg);
22347
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
780 } else if (strstr(msg_text, "!!!GroupCount=")) {
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
781 /* TODO: support group chats. I think the number in msg_text has
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
782 * something to do with the 'gid' field. */
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
783 purple_debug_info("msim", "msim_incoming_action: TODO: implement #4691, group chats: %s\n", msg_text);
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
784
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
785 rc = TRUE;
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
786 } else if (strstr(msg_text, "!!!Offline=")) {
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
787 /* TODO: support group chats. This one might mean a user
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
788 * went offline or exited the chat. */
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
789 purple_debug_info("msim", "msim_incoming_action: TODO: implement #4691, group chats: %s\n", msg_text);
22349
96ff0e5a1d2e merge of '16745d78d4ae06c7c49622d121ae53e40a85586e'
Mark Doliner <markdoliner@pidgin.im>
parents: 22317 22348
diff changeset
790
22347
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
791 rc = TRUE;
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
792 } else if (msim_msg_get_integer(msg, "aid") != 0) {
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
793 purple_debug_info("msim", "TODO: implement #4691, group chat from %d on %d: %s\n",
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
794 msim_msg_get_integer(msg, "aid"),
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
795 msim_msg_get_integer(msg, "f"),
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
796 msg_text);
22349
96ff0e5a1d2e merge of '16745d78d4ae06c7c49622d121ae53e40a85586e'
Mark Doliner <markdoliner@pidgin.im>
parents: 22317 22348
diff changeset
797
22347
88647c878849 Add stubs and comments for group chat commands, a start of #4691.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22346
diff changeset
798 rc = TRUE;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
799 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
800 msim_unrecognized(session, msg,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
801 "got to msim_incoming_action but unrecognized value for 'msg'");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
802 rc = FALSE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
803 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
804
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
805 g_free(msg_text);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
806 g_free(username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
807
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
808 return rc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
809 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
810
19528
158870ab9228 g_memdup() the icon data before setting it as the buddy icon.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19527
diff changeset
811 /* Process an incoming media (message background?) message. */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
812 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
813 msim_incoming_media(MsimSession *session, MsimMessage *msg)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
814 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
815 gchar *username, *text;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
816
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
817 username = msim_msg_get_string(msg, "_username");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
818 text = msim_msg_get_string(msg, "msg");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
819
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
820 g_return_val_if_fail(username != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
821 g_return_val_if_fail(text != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
822
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
823 purple_debug_info("msim", "msim_incoming_media: from %s, got msg=%s\n", username, text);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
824
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
825 /* Media messages are sent when the user opens a window to someone.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
826 * Tell libpurple they started typing and stopped typing, to inform the Psychic
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
827 * Mode plugin so it too can open a window to the user. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
828 serv_got_typing(session->gc, username, 0, PURPLE_TYPING);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
829 serv_got_typing_stopped(session->gc, username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
830
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
831 g_free(username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
832
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
833 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
834 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
835
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
836 /* Process an incoming "unofficial client" message. The plugin for
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
837 * Miranda IM sends this message with the plugin information. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
838 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
839 msim_incoming_unofficial_client(MsimSession *session, MsimMessage *msg)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
840 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
841 MsimUser *user;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
842 gchar *username, *client_info;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
843
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
844 username = msim_msg_get_string(msg, "_username");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
845 client_info = msim_msg_get_string(msg, "msg");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
846
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
847 g_return_val_if_fail(username != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
848 g_return_val_if_fail(client_info != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
849
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
850 purple_debug_info("msim", "msim_incoming_unofficial_client: %s is using client %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
851 username, client_info);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
852
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
853 user = msim_find_user(session, username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
854
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
855 g_return_val_if_fail(user != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
856
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
857 if (user->client_info) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
858 g_free(user->client_info);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
859 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
860 user->client_info = client_info;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
861
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
862 g_free(username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
863 /* Do not free client_info - the MsimUser now owns it. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
864
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
865 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
866 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
867
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
868
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
869 #ifdef MSIM_SEND_CLIENT_VERSION
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
870 /** Send our client version to another unofficial client that understands it. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
871 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
872 msim_send_unofficial_client(MsimSession *session, gchar *username)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
873 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
874 gchar *our_info;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
875 gboolean ret;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
876
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
877 our_info = g_strdup_printf("Libpurple %d.%d.%d - msimprpl %s",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
878 PURPLE_MAJOR_VERSION,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
879 PURPLE_MINOR_VERSION,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
880 PURPLE_MICRO_VERSION,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
881 MSIM_PRPL_VERSION_STRING);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
882
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
883 ret = msim_send_bm(session, username, our_info, MSIM_BM_UNOFFICIAL_CLIENT);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
884
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
885 return ret;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
886 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
887 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
888
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
889 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
890 * Handle when our user starts or stops typing to another user.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
891 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
892 * @param gc
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
893 * @param name The buddy name to which our user is typing to
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
894 * @param state PURPLE_TYPING, PURPLE_TYPED, PURPLE_NOT_TYPING
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
895 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
896 * @return 0
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
897 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
898 unsigned int
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
899 msim_send_typing(PurpleConnection *gc, const gchar *name,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
900 PurpleTypingState state)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
901 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
902 const gchar *typing_str;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
903 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
904
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
905 g_return_val_if_fail(gc != NULL, 0);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
906 g_return_val_if_fail(name != NULL, 0);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
907
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
908 session = (MsimSession *)gc->proto_data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
909
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
910 g_return_val_if_fail(MSIM_SESSION_VALID(session), 0);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
911
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
912 switch (state) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
913 case PURPLE_TYPING:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
914 typing_str = "%typing%";
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
915 break;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
916
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
917 case PURPLE_TYPED:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
918 case PURPLE_NOT_TYPING:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
919 default:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
920 typing_str = "%stoptyping%";
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
921 break;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
922 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
923
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
924 purple_debug_info("msim", "msim_send_typing(%s): %d (%s)\n", name, state, typing_str);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
925 msim_send_bm(session, name, typing_str, MSIM_BM_ACTION);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
926 return 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
927 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
928
19619
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
929
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
930
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
931 /** Callback for msim_get_info(), for when user info is received. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
932 static void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
933 msim_get_info_cb(MsimSession *session, MsimMessage *user_info_msg,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
934 gpointer data)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
935 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
936 MsimMessage *msg;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
937 gchar *username;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
938 PurpleNotifyUserInfo *user_info;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
939 MsimUser *user;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
940
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
941 g_return_if_fail(MSIM_SESSION_VALID(session));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
942
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
943 /* Get user{name,id} from msim_get_info, passed as an MsimMessage for
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
944 orthogonality. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
945 msg = (MsimMessage *)data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
946 g_return_if_fail(msg != NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
947
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
948 username = msim_msg_get_string(msg, "user");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
949 if (!username) {
19832
84b69b21672b Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19816
diff changeset
950 purple_debug_info("msim", "msim_get_info_cb: no 'user' in msg\n");
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
951 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
952 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
953
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
954 msim_msg_free(msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
955 purple_debug_info("msim", "msim_get_info_cb: got for user: %s\n", username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
956
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
957 user = msim_find_user(session, username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
958
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
959 if (!user) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
960 /* User isn't on blist, create a temporary user to store info. */
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
961 /* TODO: is this legit, or is it somehow responsible for #3444? */
21058
4ccbe30d873e When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evands@pidgin.im>
parents: 20942
diff changeset
962 PurpleBuddy *buddy;
4ccbe30d873e When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evands@pidgin.im>
parents: 20942
diff changeset
963
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
964 user = g_new0(MsimUser, 1);
21058
4ccbe30d873e When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evands@pidgin.im>
parents: 20942
diff changeset
965 user->temporary_user = TRUE;
4ccbe30d873e When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evands@pidgin.im>
parents: 20942
diff changeset
966
4ccbe30d873e When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evands@pidgin.im>
parents: 20942
diff changeset
967 buddy = purple_buddy_new(session->account, username, NULL);
4ccbe30d873e When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evands@pidgin.im>
parents: 20942
diff changeset
968 user->buddy = buddy;
4ccbe30d873e When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evands@pidgin.im>
parents: 20942
diff changeset
969 buddy->proto_data = (gpointer)user;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
970 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
971
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
972 /* Update user structure with new information */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
973 msim_store_user_info(session, user_info_msg, user);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
974
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
975 user_info = purple_notify_user_info_new();
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
976
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
977 /* Append data from MsimUser to PurpleNotifyUserInfo for display, full */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
978 msim_append_user_info(session, user_info, user, TRUE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
979
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
980 purple_notify_userinfo(session->gc, username, user_info, NULL, NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
981 purple_debug_info("msim", "msim_get_info_cb: username=%s\n", username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
982
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
983 purple_notify_user_info_destroy(user_info);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
984
21058
4ccbe30d873e When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evands@pidgin.im>
parents: 20942
diff changeset
985 if (user->temporary_user) {
4ccbe30d873e When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evands@pidgin.im>
parents: 20942
diff changeset
986 purple_blist_remove_buddy(user->buddy);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
987 g_free(user->client_info);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
988 g_free(user->gender);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
989 g_free(user->location);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
990 g_free(user->headline);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
991 g_free(user->display_name);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
992 g_free(user->username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
993 g_free(user->image_url);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
994 g_free(user);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
995 }
20815
a6c11702ad56 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20747
diff changeset
996 g_free(username);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
997 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
998
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
999 /** Retrieve a user's profile.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1000 * @param username Username, user ID, or email address to lookup.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1001 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1002 void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1003 msim_get_info(PurpleConnection *gc, const gchar *username)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1004 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1005 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1006 MsimUser *user;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1007 guint uid;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1008 gchar *user_to_lookup;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1009 MsimMessage *user_msg;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1010
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1011 g_return_if_fail(gc != NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1012 g_return_if_fail(username != NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1013
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1014 session = (MsimSession *)gc->proto_data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1015
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1016 g_return_if_fail(MSIM_SESSION_VALID(session));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1017
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1018 /* Obtain uid of buddy. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1019 user = msim_find_user(session, username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1020
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1021 /* If is on buddy list, lookup by uid since it is faster. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1022 if (user && (uid = purple_blist_node_get_int(&user->buddy->node, "UserID"))) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1023 user_to_lookup = g_strdup_printf("%d", uid);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1024 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1025 /* Looking up buddy not on blist. Lookup by whatever user entered. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1026 user_to_lookup = g_strdup(username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1027 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1028
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1029 /* Pass the username to msim_get_info_cb(), because since we lookup
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1030 * by userid, the userinfo message will only contain the uid (not
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1031 * the username) but it would be useful to display the username too.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1032 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1033 user_msg = msim_msg_new(
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1034 "user", MSIM_TYPE_STRING, g_strdup(username),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1035 NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1036 purple_debug_info("msim", "msim_get_info, setting up lookup, user=%s\n", username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1037
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1038 msim_lookup_user(session, user_to_lookup, msim_get_info_cb, user_msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1039
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1040 g_free(user_to_lookup);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1041 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1042
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1043 /** Set your status - callback for when user manually sets it. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1044 void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1045 msim_set_status(PurpleAccount *account, PurpleStatus *status)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1046 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1047 PurpleStatusType *type;
21824
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1048 PurplePresence *pres;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1049 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1050 guint status_code;
21824
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1051 const gchar *message;
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1052 gchar *stripped;
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1053 gchar *unrecognized_msg;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1054
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1055 session = (MsimSession *)account->gc->proto_data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1056
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1057 g_return_if_fail(MSIM_SESSION_VALID(session));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1058
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1059 type = purple_status_get_type(status);
21824
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1060 pres = purple_status_get_presence(status);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1061
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1062 switch (purple_status_type_get_primitive(type)) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1063 case PURPLE_STATUS_AVAILABLE:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1064 purple_debug_info("msim", "msim_set_status: available (%d->%d)\n", PURPLE_STATUS_AVAILABLE,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1065 MSIM_STATUS_CODE_ONLINE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1066 status_code = MSIM_STATUS_CODE_ONLINE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1067 break;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1068
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1069 case PURPLE_STATUS_INVISIBLE:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1070 purple_debug_info("msim", "msim_set_status: invisible (%d->%d)\n", PURPLE_STATUS_INVISIBLE,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1071 MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1072 status_code = MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1073 break;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1074
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1075 case PURPLE_STATUS_AWAY:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1076 purple_debug_info("msim", "msim_set_status: away (%d->%d)\n", PURPLE_STATUS_AWAY,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1077 MSIM_STATUS_CODE_AWAY);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1078 status_code = MSIM_STATUS_CODE_AWAY;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1079 break;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1080
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1081 default:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1082 purple_debug_info("msim", "msim_set_status: unknown "
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1083 "status interpreting as online");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1084 status_code = MSIM_STATUS_CODE_ONLINE;
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1085
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1086 unrecognized_msg = g_strdup_printf("msim_set_status, unrecognized status type: %d\n",
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1087 purple_status_type_get_primitive(type));
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1088 msim_unrecognized(session, NULL, unrecognized_msg);
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1089 g_free(unrecognized_msg);
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1090
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1091 break;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1092 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1093
21826
524f5786b7f1 Remove useless cast I missed before.
Kevin Stange <kstange@pidgin.im>
parents: 21824
diff changeset
1094 message = purple_status_get_attr_string(status, "message");
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1095
19731
844a19c41487 Treat status messages as the plaintext that they are.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19730
diff changeset
1096 /* Status strings are plain text. */
21824
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1097 if (message != NULL)
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1098 stripped = purple_markup_strip_html(message);
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1099 else
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1100 stripped = g_strdup("");
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1101
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1102 msim_set_status_code(session, status_code, stripped);
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1103
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1104 /* If we should be idle, set that status. Time is irrelevant here. */
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1105 if (purple_presence_is_idle(pres) && status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN)
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1106 msim_set_idle(account->gc, 1);
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1107
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1108 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1109
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1110 /** Go idle. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1111 void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1112 msim_set_idle(PurpleConnection *gc, int time)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1113 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1114 MsimSession *session;
21824
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1115 PurpleStatus *status;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1116
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1117 g_return_if_fail(gc != NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1118
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1119 session = (MsimSession *)gc->proto_data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1120
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1121 g_return_if_fail(MSIM_SESSION_VALID(session));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1122
21824
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1123 status = purple_account_get_active_status(session->account);
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1124
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1125 if (time == 0) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1126 /* Going back from idle. In msim, idle is mutually exclusive
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1127 * from the other states (you can only be away or idle, but not
21824
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1128 * both, for example), so by going non-idle I go back to what
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1129 * libpurple says I should be.
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1130 */
21824
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1131 msim_set_status(session->account, status);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1132 } else {
21824
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1133 const gchar *message;
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1134 gchar *stripped;
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1135
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1136 /* Set the idle message to the status message from the real
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1137 * current status.
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1138 */
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1139 message = purple_status_get_attr_string(status, "message");
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1140 if (message != NULL)
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1141 stripped = purple_markup_strip_html(message);
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1142 else
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1143 stripped = g_strdup("");
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1144
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1145 /* msim doesn't support idle time, so just go idle */
21824
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1146 msim_set_status_code(session, MSIM_STATUS_CODE_IDLE, stripped);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1147 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1148 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1149
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1150 /** Set status using an MSIM_STATUS_CODE_* value.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1151 * @param status_code An MSIM_STATUS_CODE_* value.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1152 * @param statstring Status string, must be a dynamic string (will be freed by msim_send).
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1153 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1154 static void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1155 msim_set_status_code(MsimSession *session, guint status_code, gchar *statstring)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1156 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1157 g_return_if_fail(MSIM_SESSION_VALID(session));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1158 g_return_if_fail(statstring != NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1159
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1160 purple_debug_info("msim", "msim_set_status_code: going to set status to code=%d,str=%s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1161 status_code, statstring);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1162
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1163 if (!msim_send(session,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1164 "status", MSIM_TYPE_INTEGER, status_code,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1165 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1166 "statstring", MSIM_TYPE_STRING, statstring,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1167 "locstring", MSIM_TYPE_STRING, g_strdup(""),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1168 NULL))
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1169 {
19832
84b69b21672b Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19816
diff changeset
1170 purple_debug_info("msim", "msim_set_status: failed to set status\n");
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1171 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1172
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1173 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1174
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1175 /** After a uid is resolved to username, tag it with the username and submit for processing.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1176 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1177 * @param session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1178 * @param userinfo Response messsage to resolving request.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1179 * @param data MsimMessage *, the message to attach information to.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1180 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1181 static void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1182 msim_incoming_resolved(MsimSession *session, MsimMessage *userinfo,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1183 gpointer data)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1184 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1185 gchar *username;
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1186 MsimMessage *msg, *body;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1187
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1188 g_return_if_fail(MSIM_SESSION_VALID(session));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1189 g_return_if_fail(userinfo != NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1190
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1191 body = msim_msg_get_dictionary(userinfo, "body");
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1192 g_return_if_fail(body != NULL);
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1193
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1194 username = msim_msg_get_string(body, "UserName");
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1195 g_return_if_fail(username != NULL);
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1196 /* Note: username will be owned by 'msg' below. */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1197
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1198 msg = (MsimMessage *)data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1199 g_return_if_fail(msg != NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1200
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1201 /* TODO: more elegant solution than below. attach whole message? */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1202 /* Special elements name beginning with '_', we'll use internally within the
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1203 * program (did not come directly from the wire). */
20815
a6c11702ad56 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20747
diff changeset
1204 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, username); /* This makes 'msg' the owner of 'username' */
22349
96ff0e5a1d2e merge of '16745d78d4ae06c7c49622d121ae53e40a85586e'
Mark Doliner <markdoliner@pidgin.im>
parents: 22317 22348
diff changeset
1205
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1206 /* TODO: attach more useful information, like ImageURL */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1207
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1208 msim_process(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1209
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1210 /* TODO: Free copy cloned from msim_preprocess_incoming(). */
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1211 /* msim_msg_free(msg); */
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1212 msim_msg_free(body);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1213 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1214
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1215 /* Lookup a username by userid, from buddy list.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1216 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1217 * @param wanted_uid
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1218 *
22355
898841de866e In msim_uid2username_from_blist(), return a static string as the documentation
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22352
diff changeset
1219 * @return Username of wanted_uid, if on blist, or NULL.
898841de866e In msim_uid2username_from_blist(), return a static string as the documentation
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22352
diff changeset
1220 * This is a static string, so don't free it. Copy it if needed.
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1221 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1222 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1223 static const gchar *
22345
5a2b46793bc7 Change msim_uid2username_from_blist to accept a PurpleAccount instead of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22344
diff changeset
1224 msim_uid2username_from_blist(PurpleAccount *account, guint wanted_uid)
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1225 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1226 GSList *buddies, *cur;
22355
898841de866e In msim_uid2username_from_blist(), return a static string as the documentation
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22352
diff changeset
1227 const gchar *ret;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1228
22345
5a2b46793bc7 Change msim_uid2username_from_blist to accept a PurpleAccount instead of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22344
diff changeset
1229 buddies = purple_find_buddies(account, NULL);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1230
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1231 if (!buddies)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1232 {
19832
84b69b21672b Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19816
diff changeset
1233 purple_debug_info("msim", "msim_uid2username_from_blist: no buddies?\n");
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1234 return NULL;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1235 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1236
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1237 ret = NULL;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1238
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1239 for (cur = buddies; cur != NULL; cur = g_slist_next(cur))
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1240 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1241 PurpleBuddy *buddy;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1242 guint uid;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1243 const gchar *name;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1244
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1245 /* See finch/gnthistory.c */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1246 buddy = cur->data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1247
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1248 uid = purple_blist_node_get_int(&buddy->node, "UserID");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1249 name = purple_buddy_get_name(buddy);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1250
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1251 if (uid == wanted_uid)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1252 {
22355
898841de866e In msim_uid2username_from_blist(), return a static string as the documentation
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22352
diff changeset
1253 ret = name;
20402
a3a7cbfe1c1c Fix a few memory leaks in #3281 (details in ticket).
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20319
diff changeset
1254 break;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1255 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1256 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1257
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1258 g_slist_free(buddies);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1259 return ret;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1260 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1261
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1262 /** Preprocess incoming messages, resolving as needed, calling msim_process() when ready to process.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1263 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1264 * @param session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1265 * @param msg MsimMessage *, freed by caller.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1266 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1267 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1268 msim_preprocess_incoming(MsimSession *session, MsimMessage *msg)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1269 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1270 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1271 g_return_val_if_fail(msg != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1272
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1273 if (msim_msg_get(msg, "bm") && msim_msg_get(msg, "f")) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1274 guint uid;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1275 const gchar *username;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1276
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1277 /* 'f' = userid message is from, in buddy messages */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1278 uid = msim_msg_get_integer(msg, "f");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1279
22345
5a2b46793bc7 Change msim_uid2username_from_blist to accept a PurpleAccount instead of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22344
diff changeset
1280 username = msim_uid2username_from_blist(session->account, uid);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1281
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1282 if (username) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1283 /* Know username already, use it. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1284 purple_debug_info("msim", "msim_preprocess_incoming: tagging with _username=%s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1285 username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1286 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1287 return msim_process(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1288
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1289 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1290 gchar *from;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1291
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1292 /* Send lookup request. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1293 /* XXX: where is msim_msg_get_string() freed? make _strdup and _nonstrdup. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1294 purple_debug_info("msim", "msim_incoming: sending lookup, setting up callback\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1295 from = msim_msg_get_string(msg, "f");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1296 msim_lookup_user(session, from, msim_incoming_resolved, msim_msg_clone(msg));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1297 g_free(from);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1298
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1299 /* indeterminate */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1300 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1301 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1302 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1303 /* Nothing to resolve - send directly to processing. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1304 return msim_process(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1305 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1306 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1307
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1308 #ifdef MSIM_USE_KEEPALIVE
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1309 /** Check if the connection is still alive, based on last communication. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1310 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1311 msim_check_alive(gpointer data)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1312 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1313 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1314 time_t delta;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1315 gchar *errmsg;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1316
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1317 session = (MsimSession *)data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1318
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1319 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1320
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1321 delta = time(NULL) - session->last_comm;
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1322 /* purple_debug_info("msim", "msim_check_alive: delta=%d\n", delta); */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1323 if (delta >= MSIM_KEEPALIVE_INTERVAL) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1324 errmsg = g_strdup_printf(_("Connection to server lost (no data received within %d seconds)"), (int)delta);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1325
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1326 purple_debug_info("msim", "msim_check_alive: %s > interval of %d, presumed dead\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1327 errmsg, MSIM_KEEPALIVE_INTERVAL);
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1328 purple_connection_error_reason(session->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
1329 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, errmsg);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1330
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1331 purple_notify_error(session->gc, NULL, errmsg, NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1332
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1333 g_free(errmsg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1334
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1335 return FALSE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1336 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1337
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1338 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1339 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1340 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1341
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1342 /** Handle mail reply checks. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1343 static void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1344 msim_check_inbox_cb(MsimSession *session, MsimMessage *reply, gpointer data)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1345 {
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1346 MsimMessage *body;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1347 guint old_inbox_status;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1348 guint i, n;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1349 const gchar *froms[5], *tos[5], *urls[5], *subjects[5];
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1350
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1351 /* Information for each new inbox message type. */
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1352 static struct
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1353 {
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1354 const gchar *key;
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1355 guint bit;
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1356 const gchar *url;
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1357 const gchar *text;
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1358 } message_types[] = {
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1359 { "Mail", MSIM_INBOX_MAIL, "http://messaging.myspace.com/index.cfm?fuseaction=mail.inbox", NULL },
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1360 { "BlogComment", MSIM_INBOX_BLOG_COMMENT, "http://blog.myspace.com/index.cfm?fuseaction=blog", NULL },
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1361 { "ProfileComment", MSIM_INBOX_PROFILE_COMMENT, "http://home.myspace.com/index.cfm?fuseaction=user", NULL },
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1362 { "FriendRequest", MSIM_INBOX_FRIEND_REQUEST, "http://messaging.myspace.com/index.cfm?fuseaction=mail.friendRequests", NULL },
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1363 { "PictureComment", MSIM_INBOX_PICTURE_COMMENT, "http://home.myspace.com/index.cfm?fuseaction=user", NULL }
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1364 };
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1365
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1366 /* Can't write _()'d strings in array initializers. Workaround. */
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1367 message_types[0].text = _("New mail messages");
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1368 message_types[1].text = _("New blog comments");
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1369 message_types[2].text = _("New profile comments");
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1370 message_types[3].text = _("New friend requests!");
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1371 message_types[4].text = _("New picture comments");
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1372
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1373 g_return_if_fail(reply != NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1374
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1375 msim_msg_dump("msim_check_inbox_cb: reply=%s\n", reply);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1376
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1377 body = msim_msg_get_dictionary(reply, "body");
21873
c4069a97a883 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kstange@pidgin.im>
parents: 21826
diff changeset
1378
c4069a97a883 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kstange@pidgin.im>
parents: 21826
diff changeset
1379 if (body == NULL)
c4069a97a883 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kstange@pidgin.im>
parents: 21826
diff changeset
1380 return;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1381
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1382 old_inbox_status = session->inbox_status;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1383
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1384 n = 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1385
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1386 for (i = 0; i < sizeof(message_types) / sizeof(message_types[0]); ++i) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1387 const gchar *key;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1388 guint bit;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1389
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1390 key = message_types[i].key;
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1391 bit = message_types[i].bit;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1392
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1393 if (msim_msg_get(body, key)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1394 /* Notify only on when _changes_ from no mail -> has mail
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1395 * (edge triggered) */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1396 if (!(session->inbox_status & bit)) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1397 purple_debug_info("msim", "msim_check_inbox_cb: got %s, at %d\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1398 key ? key : "(NULL)", n);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1399
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1400 subjects[n] = message_types[i].text;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1401 froms[n] = _("MySpace");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1402 tos[n] = session->username;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1403 /* TODO: append token, web challenge, so automatically logs in.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1404 * Would also need to free strings because they won't be static
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1405 */
19608
7eb028d95972 In msimprpl's mail notifications, change four parallel arrays into
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19607
diff changeset
1406 urls[n] = message_types[i].url;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1407
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1408 ++n;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1409 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1410 purple_debug_info("msim",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1411 "msim_check_inbox_cb: already notified of %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1412 key ? key : "(NULL)");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1413 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1414
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1415 session->inbox_status |= bit;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1416 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1417 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1418
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1419 if (n) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1420 purple_debug_info("msim",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1421 "msim_check_inbox_cb: notifying of %d\n", n);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1422
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1423 /* TODO: free strings with callback _if_ change to dynamic (w/ token) */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1424 purple_notify_emails(session->gc, /* handle */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1425 n, /* count */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1426 TRUE, /* detailed */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1427 subjects, froms, tos, urls,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1428 NULL, /* PurpleNotifyCloseCallback cb */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1429 NULL); /* gpointer user_data */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1430
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1431 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1432
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1433 msim_msg_free(body);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1434 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1435
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1436 /* Send request to check if there is new mail. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1437 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1438 msim_check_inbox(gpointer data)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1439 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1440 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1441
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1442 session = (MsimSession *)data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1443
21873
c4069a97a883 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kstange@pidgin.im>
parents: 21826
diff changeset
1444 if (!MSIM_SESSION_VALID(session)) {
c4069a97a883 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kstange@pidgin.im>
parents: 21826
diff changeset
1445 purple_debug_info("msim", "msim_check_inbox: session invalid, stopping the mail check.\n");
c4069a97a883 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kstange@pidgin.im>
parents: 21826
diff changeset
1446 return FALSE;
c4069a97a883 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kstange@pidgin.im>
parents: 21826
diff changeset
1447 }
c4069a97a883 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kstange@pidgin.im>
parents: 21826
diff changeset
1448
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1449 purple_debug_info("msim", "msim_check_inbox: checking mail\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1450 g_return_val_if_fail(msim_send(session,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1451 "persist", MSIM_TYPE_INTEGER, 1,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1452 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1453 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1454 "dsn", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_DSN,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1455 "lid", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_LID,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1456 "uid", MSIM_TYPE_INTEGER, session->userid,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1457 "rid", MSIM_TYPE_INTEGER,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1458 msim_new_reply_callback(session, msim_check_inbox_cb, NULL),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1459 "body", MSIM_TYPE_STRING, g_strdup(""),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1460 NULL), TRUE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1461
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1462 /* Always return true, so that we keep checking for mail. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1463 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1464 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1465
19741
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1466 #ifdef MSIM_CHECK_NEWER_VERSION
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1467 /** Callback for when a currentversion.txt has been downloaded. */
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1468 static void
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1469 msim_check_newer_version_cb(PurpleUtilFetchUrlData *url_data,
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1470 gpointer user_data,
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1471 const gchar *url_text,
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1472 gsize len,
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1473 const gchar *error_message)
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1474 {
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1475 GKeyFile *keyfile;
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1476 GError *error;
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1477 GString *data;
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1478 gchar *newest_filever;
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1479
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1480 if (!url_text) {
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1481 purple_debug_info("msim_check_newer_version_cb",
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1482 "got error: %s\n", error_message);
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1483 return;
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1484 }
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1485
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1486 purple_debug_info("msim_check_newer_version_cb",
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1487 "url_text=%s\n", url_text ? url_text : "(NULL)");
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1488
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1489 /* Prepend [group] so that GKeyFile can parse it (requires a group). */
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1490 data = g_string_new(url_text);
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1491 purple_debug_info("msim", "data=%s\n", data->str
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1492 ? data->str : "(NULL)");
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1493 data = g_string_prepend(data, "[group]\n");
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1494
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1495 purple_debug_info("msim", "data=%s\n", data->str
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1496 ? data->str : "(NULL)");
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1497
21058
4ccbe30d873e When getting info on a myspace user not on the buddy list, a temporary
Evan Schoenberg <evands@pidgin.im>
parents: 20942
diff changeset
1498 /* url_text is variable=data\n...†*/
19741
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1499
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1500 /* Check FILEVER, 1.0.716.0. 716 is build, MSIM_CLIENT_VERSION */
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1501 /* New (english) version can be downloaded from SETUPURL+SETUPFILE */
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1502
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1503 error = NULL;
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1504 keyfile = g_key_file_new();
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1505
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1506 /* Default list seperator is ;, but currentversion.txt doesn't have
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1507 * these, so set to an unused character to avoid parsing problems. */
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1508 g_key_file_set_list_separator(keyfile, '\0');
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1509
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1510 g_key_file_load_from_data(keyfile, data->str, data->len,
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1511 G_KEY_FILE_NONE, &error);
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1512 g_string_free(data, TRUE);
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1513
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1514 if (error != NULL) {
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1515 purple_debug_info("msim_check_newer_version_cb",
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1516 "couldn't parse, error: %d %d %s\n",
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1517 error->domain, error->code, error->message);
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1518 g_error_free(error);
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1519 return;
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1520 }
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1521
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1522 gchar **ks;
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1523 guint n;
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1524 ks = g_key_file_get_keys(keyfile, "group", &n, NULL);
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1525 purple_debug_info("msim", "n=%d\n", n);
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1526 guint i;
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1527 for (i = 0; ks[i] != NULL; ++i)
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1528 {
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1529 purple_debug_info("msim", "%d=%s\n", i, ks[i]);
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1530 }
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1531
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1532 newest_filever = g_key_file_get_string(keyfile, "group",
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1533 "FILEVER", &error);
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1534
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1535 purple_debug_info("msim_check_newer_version_cb",
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1536 "newest filever: %s\n", newest_filever ?
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1537 newest_filever : "(NULL)");
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1538 if (error != NULL) {
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1539 purple_debug_info("msim_check_newer_version_cb",
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1540 "error: %d %d %s\n",
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1541 error->domain, error->code, error->message);
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1542 g_error_free(error);
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1543 }
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1544
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1545 g_key_file_free(keyfile);
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1546
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1547 exit(0);
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1548 }
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1549 #endif
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
1550
22434
3bc4a0a62c40 In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22433
diff changeset
1551 /** Called when the session key arrives to check whether the user
3bc4a0a62c40 In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22433
diff changeset
1552 * has a username, and set one if desired. */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1553 static gboolean
22434
3bc4a0a62c40 In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22433
diff changeset
1554 msim_is_username_set(MsimSession *session, MsimMessage *msg)
3bc4a0a62c40 In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22433
diff changeset
1555 {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1556 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1557 g_return_val_if_fail(msg != NULL, FALSE);
22434
3bc4a0a62c40 In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22433
diff changeset
1558 g_return_val_if_fail(session->gc != NULL, FALSE);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1559
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1560 session->sesskey = msim_msg_get_integer(msg, "sesskey");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1561 purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1562
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1563 /* What is proof? Used to be uid, but now is 52 base64'd bytes... */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1564
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1565 /* Comes with: proof,profileid,userid,uniquenick -- all same values
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1566 * some of the time, but can vary. This is our own user ID. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1567 session->userid = msim_msg_get_integer(msg, "userid");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1568
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
1569 /* Save uid to account so this account can be looked up by uid. */
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
1570 purple_account_set_int(session->account, "uid", session->userid);
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
1571
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1572 /* Not sure what profileid is used for. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1573 if (msim_msg_get_integer(msg, "profileid") != session->userid) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1574 msim_unrecognized(session, msg,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1575 "Profile ID didn't match user ID, don't know why");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1576 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1577
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1578 /* We now know are our own username, only after we're logged in..
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1579 * which is weird, but happens because you login with your email
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1580 * address and not username. Will be freed in msim_session_destroy(). */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1581 session->username = msim_msg_get_string(msg, "uniquenick");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1582
22434
3bc4a0a62c40 In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22433
diff changeset
1583 /* If user lacks a username, help them get one. */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1584 if (msim_msg_get_integer(msg, "uniquenick") == session->userid) {
22434
3bc4a0a62c40 In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22433
diff changeset
1585 purple_debug_info("msim_is_username_set", "no username is set\n");
22433
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1586 purple_request_yes_no(session->gc,
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1587 _("MySpaceIM - No Username Set"),
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1588 _("You appear to have no MySpace username."),
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1589 _("Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"),
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1590 0,
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1591 session->account,
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1592 NULL,
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1593 NULL,
22434
3bc4a0a62c40 In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22433
diff changeset
1594 session->gc,
3bc4a0a62c40 In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22433
diff changeset
1595 G_CALLBACK(msim_set_username_cb),
3bc4a0a62c40 In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22433
diff changeset
1596 G_CALLBACK(msim_do_not_set_username_cb));
3bc4a0a62c40 In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22433
diff changeset
1597 purple_debug_info("msim_is_username_set","'username not set' alert prompted\n");
19792
00185d8fb192 If no username is set, point user to a web page where to set it, and disconnect.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19791
diff changeset
1598 return FALSE;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1599 }
22433
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1600 return TRUE;
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1601 }
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1602
22434
3bc4a0a62c40 In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22433
diff changeset
1603 /** Called after username is set, if necessary and we're open for business. */
3bc4a0a62c40 In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22433
diff changeset
1604 gboolean msim_we_are_logged_on(MsimSession *session)
3bc4a0a62c40 In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22433
diff changeset
1605 {
22433
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1606 MsimMessage *body;
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1607
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1608 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1609
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1610 /* The session is now set up, ready to be connected. This emits the
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1611 * signedOn signal, so clients can now do anything with msimprpl, and
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1612 * we're ready for it (session key, userid, username all setup). */
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1613 purple_connection_update_progress(session->gc, _("Connected"), 3, 4);
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1614 purple_connection_set_state(session->gc, PURPLE_CONNECTED);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1615
22439
7d55e1ec2825 If the user sets a username (because they don't have one), and it succeeds,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22434
diff changeset
1616 /* Set display name to username (otherwise will show email address) */
7d55e1ec2825 If the user sets a username (because they don't have one), and it succeeds,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22434
diff changeset
1617 purple_connection_set_display_name(session->gc, session->username);
7d55e1ec2825 If the user sets a username (because they don't have one), and it succeeds,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22434
diff changeset
1618
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1619 body = msim_msg_new(
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1620 "UserID", MSIM_TYPE_INTEGER, session->userid,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1621 NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1622
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1623 /* Request IM info about ourself. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1624 msim_send(session,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1625 "persist", MSIM_TYPE_STRING, g_strdup("persist"),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1626 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1627 "dsn", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_DSN,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1628 "uid", MSIM_TYPE_INTEGER, session->userid,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1629 "lid", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_LID,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1630 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1631 "body", MSIM_TYPE_DICTIONARY, body,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1632 NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1633
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1634 /* Request MySpace info about ourself. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1635 msim_send(session,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1636 "persist", MSIM_TYPE_STRING, g_strdup("persist"),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1637 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1638 "dsn", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_DSN,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1639 "uid", MSIM_TYPE_INTEGER, session->userid,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1640 "lid", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_LID,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1641 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1642 "body", MSIM_TYPE_STRING, g_strdup(""),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1643 NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1644
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1645 /* TODO: set options (persist cmd=514,dsn=1,lid=10) */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1646 /* TODO: set blocklist */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1647
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1648 /* Notify servers of our current status. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1649 purple_debug_info("msim", "msim_we_are_logged_on: notifying servers of status\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1650 msim_set_status(session->account,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1651 purple_account_get_active_status(session->account));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1652
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1653 /* TODO: setinfo */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1654 /*
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1655 body = msim_msg_new(
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1656 "TotalFriends", MSIM_TYPE_INTEGER, 666,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1657 NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1658 msim_send(session,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1659 "setinfo", MSIM_TYPE_BOOLEAN, TRUE,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1660 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1661 "info", MSIM_TYPE_DICTIONARY, body,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1662 NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1663 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1664
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1665 /* Disable due to problems with timeouts. TODO: fix. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1666 #ifdef MSIM_USE_KEEPALIVE
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1667 purple_timeout_add(MSIM_KEEPALIVE_INTERVAL_CHECK,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1668 (GSourceFunc)msim_check_alive, session);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1669 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1670
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1671 /* Check mail if they want to. */
19621
a56a4af5af49 Only check for mail if "New mail notifications" is enabled in account options.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19620
diff changeset
1672 if (purple_account_get_check_mail(session->account)) {
21873
c4069a97a883 Avoid checking for new message in the inbox when not actually connected.
Kevin Stange <kstange@pidgin.im>
parents: 21826
diff changeset
1673 session->inbox_handle = purple_timeout_add(MSIM_MAIL_INTERVAL_CHECK,
19621
a56a4af5af49 Only check for mail if "New mail notifications" is enabled in account options.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19620
diff changeset
1674 (GSourceFunc)msim_check_inbox, session);
a56a4af5af49 Only check for mail if "New mail notifications" is enabled in account options.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19620
diff changeset
1675 msim_check_inbox(session);
a56a4af5af49 Only check for mail if "New mail notifications" is enabled in account options.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19620
diff changeset
1676 }
a56a4af5af49 Only check for mail if "New mail notifications" is enabled in account options.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19620
diff changeset
1677
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
1678 msim_get_contact_list(session, MSIM_CONTACT_LIST_INITIAL_FRIENDS);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1679
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1680 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1681 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1682
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1683 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1684 * Process a message.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1685 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1686 * @param session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1687 * @param msg A message from the server, ready for processing (possibly with resolved username information attached). Caller frees.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1688 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1689 * @return TRUE if successful. FALSE if processing failed.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1690 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1691 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1692 msim_process(MsimSession *session, MsimMessage *msg)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1693 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1694 g_return_val_if_fail(session != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1695 g_return_val_if_fail(msg != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1696
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1697 #ifdef MSIM_DEBUG_MSG
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1698 msim_msg_dump("ready to process: %s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1699 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1700
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1701 if (msim_msg_get_integer(msg, "lc") == 1) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1702 return msim_login_challenge(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1703 } else if (msim_msg_get_integer(msg, "lc") == 2) {
22433
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1704 /* return msim_we_are_logged_on(session, msg); */
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1705 if (msim_is_username_set(session, msg)) {
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1706 return msim_we_are_logged_on(session);
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1707 } else {
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1708 /* No username is set... We'll wait for the callbacks to do their work */
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1709 /* When they're all done, the last one will call msim_we_are_logged_on() and pick up where we left off */
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1710 return FALSE;
41a60cb99e28 In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22416
diff changeset
1711 }
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1712 } else if (msim_msg_get(msg, "bm")) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1713 return msim_incoming_bm(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1714 } else if (msim_msg_get(msg, "rid")) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1715 return msim_process_reply(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1716 } else if (msim_msg_get(msg, "error")) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1717 return msim_error(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1718 } else if (msim_msg_get(msg, "ka")) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1719 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1720 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1721 msim_unrecognized(session, msg, "in msim_process");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1722 return FALSE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1723 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1724 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1725
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1726 /** Process the initial server information from the server. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1727 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1728 msim_process_server_info(MsimSession *session, MsimMessage *msg)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1729 {
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1730 MsimMessage *body;
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1731
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1732 body = msim_msg_get_dictionary(msg, "body");
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1733 g_return_val_if_fail(body != NULL, FALSE);
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1734
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1735 /* Example body:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1736 AdUnitRefreshInterval=10.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1737 AlertPollInterval=360.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1738 AllowChatRoomEmoticonSharing=False.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1739 ChatRoomUserIDs=78744676;163733130;1300326231;123521495;142663391.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1740 CurClientVersion=673.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1741 EnableIMBrowse=True.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1742 EnableIMStuffAvatars=False.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1743 EnableIMStuffZaps=False.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1744 MaxAddAllFriends=100.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1745 MaxContacts=1000.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1746 MinClientVersion=594.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1747 MySpaceIM_ENGLISH=78744676.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1748 MySpaceNowTimer=720.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1749 PersistenceDataTimeout=900.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1750 UseWebChallenge=1.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1751 WebTicketGoHome=False
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1752
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1753 Anything useful? TODO: use what is useful, and use it.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1754 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1755 purple_debug_info("msim_process_server_info",
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1756 "maximum contacts: %d\n",
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
1757 msim_msg_get_integer(body, "MaxContacts"));
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1758
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1759 session->server_info = body;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1760 /* session->server_info freed in msim_session_destroy */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1761
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1762 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1763 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1764
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1765 /** Process a web challenge, used to login to the web site. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1766 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1767 msim_web_challenge(MsimSession *session, MsimMessage *msg)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1768 {
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1769 /* TODO: web challenge, store token. #2659. */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1770 return FALSE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1771 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1772
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1773 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1774 * Process a persistance message reply from the server.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1775 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1776 * @param session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1777 * @param msg Message reply from server.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1778 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1779 * @return TRUE if successful.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1780 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1781 * msim_lookup_user sets callback for here
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1782 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1783 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1784 msim_process_reply(MsimSession *session, MsimMessage *msg)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1785 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1786 MSIM_USER_LOOKUP_CB cb;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1787 gpointer data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1788 guint rid, cmd, dsn, lid;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1789
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1790 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1791 g_return_val_if_fail(msg != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1792
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1793 msim_store_user_info(session, msg, NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1794
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1795 rid = msim_msg_get_integer(msg, "rid");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1796 cmd = msim_msg_get_integer(msg, "cmd");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1797 dsn = msim_msg_get_integer(msg, "dsn");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1798 lid = msim_msg_get_integer(msg, "lid");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1799
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1800 /* Unsolicited messages */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1801 if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_GET)) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1802 if (dsn == MG_SERVER_INFO_DSN && lid == MG_SERVER_INFO_LID) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1803 return msim_process_server_info(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1804 } else if (dsn == MG_WEB_CHALLENGE_DSN && lid == MG_WEB_CHALLENGE_LID) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1805 return msim_web_challenge(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1806 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1807 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1808
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1809 /* If a callback is registered for this userid lookup, call it. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1810 cb = g_hash_table_lookup(session->user_lookup_cb, GUINT_TO_POINTER(rid));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1811 data = g_hash_table_lookup(session->user_lookup_cb_data, GUINT_TO_POINTER(rid));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1812
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1813 if (cb) {
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1814 purple_debug_info("msim", "msim_process_reply: calling callback now\n");
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1815 msim_msg_dump("for msg=%s\n", msg);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1816 /* Clone message, so that the callback 'cb' can use it (needs to free it also). */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1817 cb(session, msim_msg_clone(msg), data);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1818 g_hash_table_remove(session->user_lookup_cb, GUINT_TO_POINTER(rid));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1819 g_hash_table_remove(session->user_lookup_cb_data, GUINT_TO_POINTER(rid));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1820 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1821 purple_debug_info("msim",
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
1822 "msim_process_reply: no callback for rid %d\n", rid);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1823 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1824
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1825 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1826 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1827
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1828 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1829 * Handle an error from the server.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1830 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1831 * @param session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1832 * @param msg The message.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1833 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1834 * @return TRUE if successfully reported error.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1835 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1836 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1837 msim_error(MsimSession *session, MsimMessage *msg)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1838 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1839 gchar *errmsg, *full_errmsg;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1840 guint err;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1841
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1842 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1843 g_return_val_if_fail(msg != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1844
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1845 err = msim_msg_get_integer(msg, "err");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1846 errmsg = msim_msg_get_string(msg, "errmsg");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1847
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1848 full_errmsg = g_strdup_printf(_("Protocol error, code %d: %s"), err,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1849 errmsg ? errmsg : "no 'errmsg' given");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1850
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1851 g_free(errmsg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1852
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1853 purple_debug_info("msim", "msim_error (sesskey=%d): %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1854 session->sesskey, full_errmsg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1855
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1856 /* Destroy session if fatal. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1857 if (msim_msg_get(msg, "fatal")) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
1858 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1859 purple_debug_info("msim", "fatal error, closing\n");
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1860
20659
d643541cce12 Clear the password consistently when we get a "Signed-On elsewhere" or a "Invalid Password" disconnection. Disconnection reason codes will take care of this in the core, but until then, this is ok.
Daniel Atallah <datallah@pidgin.im>
parents: 20649
diff changeset
1861 switch (err) {
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1862 case MSIM_ERROR_INCORRECT_PASSWORD: /* Incorrect password */
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
1863 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
20853
2637f895b850 propagate from branch 'im.pidgin.pidgin' (head 32d28b465fe37954f20265414e216024313570ad)
Will Thompson <resiak@pidgin.im>
parents: 20815 20449
diff changeset
1864 if (!purple_account_get_remember_password(session->account))
2637f895b850 propagate from branch 'im.pidgin.pidgin' (head 32d28b465fe37954f20265414e216024313570ad)
Will Thompson <resiak@pidgin.im>
parents: 20815 20449
diff changeset
1865 purple_account_set_password(session->account, NULL);
22393
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1866 #ifdef MSIM_MAX_PASSWORD_LENGTH
22614
3c62e67e1c87 Verify that session->account->password is not NULL before passing it to strlen()
Evan Schoenberg <evands@pidgin.im>
parents: 22439
diff changeset
1867 if (session->account->password && (strlen(session->account->password) > MSIM_MAX_PASSWORD_LENGTH)) {
22393
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1868 gchar *suggestion;
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1869
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1870 suggestion = g_strdup_printf(_("%s Your password is "
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1871 "%d characters, greater than the "
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1872 "expected maximum length of %d for "
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1873 "MySpaceIM. Please shorten your "
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1874 "password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."),
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1875 full_errmsg, (int)
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1876 strlen(session->account->password),
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1877 MSIM_MAX_PASSWORD_LENGTH);
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1878
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1879 /* Replace full_errmsg. */
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1880 g_free(full_errmsg);
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1881 full_errmsg = suggestion;
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1882 }
b4f54ad21ffa In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22358
diff changeset
1883 #endif
20853
2637f895b850 propagate from branch 'im.pidgin.pidgin' (head 32d28b465fe37954f20265414e216024313570ad)
Will Thompson <resiak@pidgin.im>
parents: 20815 20449
diff changeset
1884 break;
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1885 case MSIM_ERROR_LOGGED_IN_ELSEWHERE: /* Logged in elsewhere */
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
1886 reason = PURPLE_CONNECTION_ERROR_NAME_IN_USE;
20659
d643541cce12 Clear the password consistently when we get a "Signed-On elsewhere" or a "Invalid Password" disconnection. Disconnection reason codes will take care of this in the core, but until then, this is ok.
Daniel Atallah <datallah@pidgin.im>
parents: 20649
diff changeset
1887 if (!purple_account_get_remember_password(session->account))
d643541cce12 Clear the password consistently when we get a "Signed-On elsewhere" or a "Invalid Password" disconnection. Disconnection reason codes will take care of this in the core, but until then, this is ok.
Daniel Atallah <datallah@pidgin.im>
parents: 20649
diff changeset
1888 purple_account_set_password(session->account, NULL);
d643541cce12 Clear the password consistently when we get a "Signed-On elsewhere" or a "Invalid Password" disconnection. Disconnection reason codes will take care of this in the core, but until then, this is ok.
Daniel Atallah <datallah@pidgin.im>
parents: 20649
diff changeset
1889 break;
19816
bbc1ca913085 Ka-Hing reminded me that we should set the password to NULL when
Mark Doliner <markdoliner@pidgin.im>
parents: 19815
diff changeset
1890 }
20449
7ee73f97ee74 purple_connection_error_reason-ify myspace
Will Thompson <resiak@pidgin.im>
parents: 20319
diff changeset
1891 purple_connection_error_reason (session->gc, reason, full_errmsg);
19815
204fb857496e Three small changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 19790
diff changeset
1892 } else {
20815
a6c11702ad56 Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20747
diff changeset
1893 purple_notify_error(session->account, _("MySpaceIM Error"), full_errmsg, NULL);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1894 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1895
19815
204fb857496e Three small changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 19790
diff changeset
1896 g_free(full_errmsg);
204fb857496e Three small changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 19790
diff changeset
1897
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1898 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1899 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1900
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1901 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1902 * Process incoming status messages.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1903 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1904 * @param session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1905 * @param msg Status update message. Caller frees.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1906 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1907 * @return TRUE if successful.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1908 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1909 static gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1910 msim_incoming_status(MsimSession *session, MsimMessage *msg)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1911 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1912 PurpleBuddyList *blist;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1913 MsimUser *user;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1914 GList *list;
19731
844a19c41487 Treat status messages as the plaintext that they are.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19730
diff changeset
1915 gchar *status_headline, *status_headline_escaped;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1916 gint status_code, purple_status_code;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1917 gchar *username;
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1918 gchar *unrecognized_msg;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1919
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1920 g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1921 g_return_val_if_fail(msg != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1922
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1923 msim_msg_dump("msim_status msg=%s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1924
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1925 /* Helpfully looked up by msim_incoming_resolve() for us. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1926 username = msim_msg_get_string(msg, "_username");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1927 g_return_val_if_fail(username != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1928
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1929 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1930 gchar *ss;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1931
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1932 ss = msim_msg_get_string(msg, "msg");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1933 purple_debug_info("msim",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1934 "msim_status: updating status for <%s> to <%s>\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1935 username, ss ? ss : "(NULL)");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1936 g_free(ss);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1937 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1938
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1939 /* Example fields:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1940 * |s|0|ss|Offline
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1941 * |s|1|ss|:-)|ls||ip|0|p|0
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1942 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1943 list = msim_msg_get_list(msg, "msg");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1944
19615
27d6e6c234c4 Now that MsimMessageElement's are more accessible outside message.c,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19608
diff changeset
1945 status_code = msim_msg_get_integer_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_ONLINE));
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1946 purple_debug_info("msim", "msim_status: %s's status code = %d\n", username, status_code);
19615
27d6e6c234c4 Now that MsimMessageElement's are more accessible outside message.c,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19608
diff changeset
1947 status_headline = msim_msg_get_string_from_element(g_list_nth_data(list, MSIM_STATUS_ORDINAL_HEADLINE));
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1948
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1949 blist = purple_get_blist();
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1950
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1951 /* Add buddy if not found.
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1952 * TODO: Could this be responsible for #3444? */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1953 user = msim_find_user(session, username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1954 if (!user) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1955 PurpleBuddy *buddy;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1956
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1957 purple_debug_info("msim",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1958 "msim_status: making new buddy for %s\n", username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1959 buddy = purple_buddy_new(session->account, username, NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1960 purple_blist_add_buddy(buddy, NULL, NULL, NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1961
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1962 user = msim_get_user_from_buddy(buddy);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1963
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
1964 /* All buddies on list should have a UserID integer associated with them. */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1965 purple_blist_node_set_int(&buddy->node, "UserID", msim_msg_get_integer(msg, "f"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1966
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1967 msim_store_user_info(session, msg, NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1968 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1969 purple_debug_info("msim", "msim_status: found buddy %s\n", username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1970 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1971
21824
c038e2cd8d92 This fixes some idle-related behavior with the MySpace prpl, most particularly
Kevin Stange <kstange@pidgin.im>
parents: 21503
diff changeset
1972 if (status_headline && strcmp(status_headline, "") != 0) {
19791
2023cc0c4190 For status messages, make sure NULL isn't passed to g_markup_escape_text().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19790
diff changeset
1973 /* The status headline is plaintext, but libpurple treats it as HTML,
2023cc0c4190 For status messages, make sure NULL isn't passed to g_markup_escape_text().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19790
diff changeset
1974 * so escape any HTML characters to their entity equivalents. */
2023cc0c4190 For status messages, make sure NULL isn't passed to g_markup_escape_text().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19790
diff changeset
1975 status_headline_escaped = g_markup_escape_text(status_headline, strlen(status_headline));
2023cc0c4190 For status messages, make sure NULL isn't passed to g_markup_escape_text().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19790
diff changeset
1976 } else {
2023cc0c4190 For status messages, make sure NULL isn't passed to g_markup_escape_text().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19790
diff changeset
1977 status_headline_escaped = NULL;
2023cc0c4190 For status messages, make sure NULL isn't passed to g_markup_escape_text().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19790
diff changeset
1978 }
2023cc0c4190 For status messages, make sure NULL isn't passed to g_markup_escape_text().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19790
diff changeset
1979
19731
844a19c41487 Treat status messages as the plaintext that they are.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19730
diff changeset
1980 g_free(status_headline);
844a19c41487 Treat status messages as the plaintext that they are.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19730
diff changeset
1981
844a19c41487 Treat status messages as the plaintext that they are.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19730
diff changeset
1982 if (user->headline)
844a19c41487 Treat status messages as the plaintext that they are.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19730
diff changeset
1983 g_free(user->headline);
844a19c41487 Treat status messages as the plaintext that they are.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19730
diff changeset
1984
19615
27d6e6c234c4 Now that MsimMessageElement's are more accessible outside message.c,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19608
diff changeset
1985 /* don't copy; let the MsimUser own the headline, memory-wise */
19731
844a19c41487 Treat status messages as the plaintext that they are.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19730
diff changeset
1986 user->headline = status_headline_escaped;
22346
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
1987
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1988 /* Set user status */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1989 switch (status_code) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1990 case MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1991 purple_status_code = PURPLE_STATUS_OFFLINE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1992 break;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1993
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1994 case MSIM_STATUS_CODE_ONLINE:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1995 purple_status_code = PURPLE_STATUS_AVAILABLE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1996 break;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1997
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1998 case MSIM_STATUS_CODE_AWAY:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
1999 purple_status_code = PURPLE_STATUS_AWAY;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2000 break;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2001
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2002 case MSIM_STATUS_CODE_IDLE:
21874
5408a9950d64 This makes myspace treat idle as an available status, which avoids idle
Kevin Stange <kstange@pidgin.im>
parents: 21873
diff changeset
2003 /* Treat idle as an available status. */
5408a9950d64 This makes myspace treat idle as an available status, which avoids idle
Kevin Stange <kstange@pidgin.im>
parents: 21873
diff changeset
2004 purple_status_code = PURPLE_STATUS_AVAILABLE;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2005 break;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2006
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2007 default:
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2008 purple_debug_info("msim", "msim_incoming_status for %s, unknown status code %d, treating as available\n",
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2009 username, status_code);
19607
0b72b396dbcd Lookup a user's information when their status changes to anything but
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19606
diff changeset
2010 purple_status_code = PURPLE_STATUS_AVAILABLE;
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2011
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2012 unrecognized_msg = g_strdup_printf("msim_incoming_status, unrecognized status code: %d\n",
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2013 status_code);
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2014 msim_unrecognized(session, NULL, unrecognized_msg);
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2015 g_free(unrecognized_msg);
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2016
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2017 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2018
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2019 purple_prpl_got_user_status(session->account, username, purple_primitive_get_id_from_type(purple_status_code), NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2020
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2021 if (status_code == MSIM_STATUS_CODE_IDLE) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2022 purple_debug_info("msim", "msim_status: got idle: %s\n", username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2023 purple_prpl_got_user_idle(session->account, username, TRUE, time(NULL));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2024 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2025 /* All other statuses indicate going back to non-idle. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2026 purple_prpl_got_user_idle(session->account, username, FALSE, time(NULL));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2027 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2028
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2029 #ifdef MSIM_SEND_CLIENT_VERSION
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2030 if (status_code == MSIM_STATUS_CODE_ONLINE) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2031 /* Secretly whisper to unofficial clients our own version as they come online */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2032 msim_send_unofficial_client(session, username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2033 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2034 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2035
19607
0b72b396dbcd Lookup a user's information when their status changes to anything but
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19606
diff changeset
2036 if (status_code != MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN) {
0b72b396dbcd Lookup a user's information when their status changes to anything but
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19606
diff changeset
2037 /* Get information when they come online.
0b72b396dbcd Lookup a user's information when their status changes to anything but
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19606
diff changeset
2038 * TODO: periodically refresh?
0b72b396dbcd Lookup a user's information when their status changes to anything but
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19606
diff changeset
2039 */
0b72b396dbcd Lookup a user's information when their status changes to anything but
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19606
diff changeset
2040 purple_debug_info("msim_incoming_status", "%s came online, looking up\n", username);
0b72b396dbcd Lookup a user's information when their status changes to anything but
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19606
diff changeset
2041 msim_lookup_user(session, username, NULL, NULL);
0b72b396dbcd Lookup a user's information when their status changes to anything but
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19606
diff changeset
2042 }
0b72b396dbcd Lookup a user's information when their status changes to anything but
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19606
diff changeset
2043
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2044 g_free(username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2045 msim_msg_list_free(list);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2046
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2047 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2048 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2049
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2050 /** Add a buddy to user's buddy list. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2051 void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2052 msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2053 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2054 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2055 MsimMessage *msg;
19740
17a9a2e5ef4a Add uid field to add buddy persistance request. Now adding buddies to the
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19737
diff changeset
2056 MsimMessage *msg_persist;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2057 MsimMessage *body;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2058
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2059 session = (MsimSession *)gc->proto_data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2060 purple_debug_info("msim", "msim_add_buddy: want to add %s to %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2061 buddy->name, (group && group->name) ? group->name : "(no group)");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2062
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2063 msg = msim_msg_new(
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2064 "addbuddy", MSIM_TYPE_BOOLEAN, TRUE,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2065 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2066 /* "newprofileid" will be inserted here with uid. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2067 "reason", MSIM_TYPE_STRING, g_strdup(""),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2068 NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2069
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2070 if (!msim_postprocess_outgoing(session, msg, buddy->name, "newprofileid", "reason")) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2071 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed."));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2072 msim_msg_free(msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2073 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2074 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2075 msim_msg_free(msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2076
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2077 /* TODO: if addbuddy fails ('error' message is returned), delete added buddy from
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2078 * buddy list since Purple adds it locally. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2079
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2080 body = msim_msg_new(
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2081 "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2082 "GroupName", MSIM_TYPE_STRING, g_strdup(group->name),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2083 "Position", MSIM_TYPE_INTEGER, 1000,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2084 "Visibility", MSIM_TYPE_INTEGER, 1,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2085 "NickName", MSIM_TYPE_STRING, g_strdup(""),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2086 "NameSelect", MSIM_TYPE_INTEGER, 0,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2087 NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2088
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2089 /* TODO: Update blocklist. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2090
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2091 msg_persist = msim_msg_new(
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2092 "persist", MSIM_TYPE_INTEGER, 1,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2093 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2094 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2095 "dsn", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_DSN,
19740
17a9a2e5ef4a Add uid field to add buddy persistance request. Now adding buddies to the
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19737
diff changeset
2096 "uid", MSIM_TYPE_INTEGER, session->userid,
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2097 "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2098 /* TODO: Use msim_new_reply_callback to get rid. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2099 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2100 "body", MSIM_TYPE_DICTIONARY, body,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2101 NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2102
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2103 if (!msim_postprocess_outgoing(session, msg_persist, buddy->name, "body", NULL))
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2104 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2105 purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2106 msim_msg_free(msg_persist);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2107 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2108 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2109 msim_msg_free(msg_persist);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2110
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2111 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2112
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2113 /** Perform actual postprocessing on a message, adding userid as specified.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2114 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2115 * @param msg The message to postprocess.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2116 * @param uid_before Name of field where to insert new field before, or NULL for end.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2117 * @param uid_field_name Name of field to add uid to.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2118 * @param uid The userid to insert.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2119 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2120 * If the field named by uid_field_name already exists, then its string contents will
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2121 * be used for the field, except "<uid>" will be replaced by the userid.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2122 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2123 * If the field named by uid_field_name does not exist, it will be added before the
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2124 * field named by uid_before, as an integer, with the userid.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2125 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2126 * Does not handle sending, or scheduling userid lookup. For that, see msim_postprocess_outgoing().
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2127 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2128 static MsimMessage *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2129 msim_do_postprocessing(MsimMessage *msg, const gchar *uid_before,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2130 const gchar *uid_field_name, guint uid)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2131 {
20942
5ea16ef55b3d Fix CID 342 (which wasn't wrong, but was inefficient and confusing.)
Daniel Atallah <datallah@pidgin.im>
parents: 20815
diff changeset
2132 MsimMessageElement *elem;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2133 msim_msg_dump("msim_do_postprocessing msg: %s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2134
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2135 /* First, check - if the field already exists, replace <uid> within it */
20942
5ea16ef55b3d Fix CID 342 (which wasn't wrong, but was inefficient and confusing.)
Daniel Atallah <datallah@pidgin.im>
parents: 20815
diff changeset
2136 if ((elem = msim_msg_get(msg, uid_field_name)) != NULL) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2137 gchar *fmt_string;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2138 gchar *uid_str, *new_str;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2139
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2140 /* Get the packed element, flattening it. This allows <uid> to be
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2141 * replaced within nested data structures, since the replacement is done
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2142 * on the linear, packed data, not on a complicated data structure.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2143 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2144 * For example, if the field was originally a dictionary or a list, you
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2145 * would have to iterate over all the items in it to see what needs to
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2146 * be replaced. But by packing it first, the <uid> marker is easily replaced
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2147 * just by a string replacement.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2148 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2149 fmt_string = msim_msg_pack_element_data(elem);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2150
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2151 uid_str = g_strdup_printf("%d", uid);
19644
a36c0623d540 Replace homegrown str_replace() with purple_strreplace(), after discovering it.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19640
diff changeset
2152 new_str = purple_strreplace(fmt_string, "<uid>", uid_str);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2153 g_free(uid_str);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2154 g_free(fmt_string);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2155
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2156 /* Free the old element data */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2157 msim_msg_free_element_data(elem->data);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2158
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2159 /* Replace it with our new data */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2160 elem->data = new_str;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2161 elem->type = MSIM_TYPE_RAW;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2162
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2163 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2164 /* Otherwise, insert new field into outgoing message. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2165 msg = msim_msg_insert_before(msg, uid_before, uid_field_name, MSIM_TYPE_INTEGER, GUINT_TO_POINTER(uid));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2166 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2167
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2168 msim_msg_dump("msim_postprocess_outgoing_cb: postprocessed msg=%s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2169
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2170 return msg;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2171 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2172
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2173 /** Callback for msim_postprocess_outgoing() to add a userid to a message, and send it (once receiving userid).
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2174 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2175 * @param session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2176 * @param userinfo The user information reply message, containing the user ID
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2177 * @param data The message to postprocess and send.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2178 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2179 * The data message should contain these fields:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2180 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2181 * _uid_field_name: string, name of field to add with userid from userinfo message
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2182 * _uid_before: string, name of field before field to insert, or NULL for end
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2183 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2184 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2185 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2186 static void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2187 msim_postprocess_outgoing_cb(MsimSession *session, MsimMessage *userinfo,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2188 gpointer data)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2189 {
19527
039fcd700802 If a username cannot be looked up in postprocessing, throw up an error.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19519
diff changeset
2190 gchar *uid_field_name, *uid_before, *username;
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
2191 guint uid;
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
2192 MsimMessage *msg, *body;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2193
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2194 msg = (MsimMessage *)data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2195
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2196 msim_msg_dump("msim_postprocess_outgoing_cb() got msg=%s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2197
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2198 /* Obtain userid from userinfo message. */
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
2199 body = msim_msg_get_dictionary(userinfo, "body");
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
2200 g_return_if_fail(body != NULL);
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
2201
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
2202 uid = msim_msg_get_integer(body, "UserID");
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
2203 msim_msg_free(body);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2204
19527
039fcd700802 If a username cannot be looked up in postprocessing, throw up an error.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19519
diff changeset
2205 username = msim_msg_get_string(msg, "_username");
039fcd700802 If a username cannot be looked up in postprocessing, throw up an error.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19519
diff changeset
2206
039fcd700802 If a username cannot be looked up in postprocessing, throw up an error.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19519
diff changeset
2207 if (!uid) {
039fcd700802 If a username cannot be looked up in postprocessing, throw up an error.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19519
diff changeset
2208 gchar *msg;
039fcd700802 If a username cannot be looked up in postprocessing, throw up an error.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19519
diff changeset
2209
039fcd700802 If a username cannot be looked up in postprocessing, throw up an error.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19519
diff changeset
2210 msg = g_strdup_printf(_("No such user: %s"), username);
22346
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
2211 if (!purple_conv_present_error(username, session->account, msg)) {
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
2212 purple_notify_error(NULL, NULL, _("User lookup"), msg);
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
2213 }
22291
cdf0c66283cb Patch from Jaywalker to show error messages inline with an IM window, if
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22290
diff changeset
2214
19527
039fcd700802 If a username cannot be looked up in postprocessing, throw up an error.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19519
diff changeset
2215 g_free(msg);
039fcd700802 If a username cannot be looked up in postprocessing, throw up an error.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19519
diff changeset
2216 g_free(username);
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2217 /* TODO: free
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2218 * msim_msg_free(msg);
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2219 */
19527
039fcd700802 If a username cannot be looked up in postprocessing, throw up an error.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19519
diff changeset
2220 return;
039fcd700802 If a username cannot be looked up in postprocessing, throw up an error.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19519
diff changeset
2221 }
039fcd700802 If a username cannot be looked up in postprocessing, throw up an error.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19519
diff changeset
2222
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2223 uid_field_name = msim_msg_get_string(msg, "_uid_field_name");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2224 uid_before = msim_msg_get_string(msg, "_uid_before");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2225
19514
9456ceb35a25 Replace msim_parse_body(), which returns a GHashTable * and takes a gchar *,
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19512
diff changeset
2226 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2227
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2228 /* Send */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2229 if (!msim_msg_send(session, msg)) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2230 msim_msg_dump("msim_postprocess_outgoing_cb: sending failed for message: %s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2231 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2232
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2233
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2234 /* Free field names AFTER sending message, because MsimMessage does NOT copy
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2235 * field names - instead, treats them as static strings (which they usually are).
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2236 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2237 g_free(uid_field_name);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2238 g_free(uid_before);
19527
039fcd700802 If a username cannot be looked up in postprocessing, throw up an error.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19519
diff changeset
2239 g_free(username);
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2240 /* TODO: free
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2241 * msim_msg_free(msg);
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2242 */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2243 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2244
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2245 /** Postprocess and send a message.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2246 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2247 * @param session
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2248 * @param msg Message to postprocess. Will NOT be freed.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2249 * @param username Username to resolve. Assumed to be a static string (will not be freed or copied).
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2250 * @param uid_field_name Name of new field to add, containing uid of username. Static string.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2251 * @param uid_before Name of existing field to insert username field before. Static string.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2252 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2253 * @return TRUE if successful.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2254 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2255 gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2256 msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2257 const gchar *username, const gchar *uid_field_name,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2258 const gchar *uid_before)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2259 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2260 PurpleBuddy *buddy;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2261 guint uid;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2262 gboolean rc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2263
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2264 g_return_val_if_fail(msg != NULL, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2265
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2266 /* Store information for msim_postprocess_outgoing_cb(). */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2267 msim_msg_dump("msim_postprocess_outgoing: msg before=%s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2268 msg = msim_msg_append(msg, "_username", MSIM_TYPE_STRING, g_strdup(username));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2269 msg = msim_msg_append(msg, "_uid_field_name", MSIM_TYPE_STRING, g_strdup(uid_field_name));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2270 msg = msim_msg_append(msg, "_uid_before", MSIM_TYPE_STRING, g_strdup(uid_before));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2271
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2272 /* First, try the most obvious. If numeric userid is given, use that directly. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2273 if (msim_is_userid(username)) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2274 uid = atol(username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2275 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2276 /* Next, see if on buddy list and know uid. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2277 buddy = purple_find_buddy(session->account, username);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2278 if (buddy) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2279 uid = purple_blist_node_get_int(&buddy->node, "UserID");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2280 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2281 uid = 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2282 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2283
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2284 if (!buddy || !uid) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2285 /* Don't have uid offhand - need to ask for it, and wait until hear back before sending. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2286 purple_debug_info("msim", ">>> msim_postprocess_outgoing: couldn't find username %s in blist\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2287 username ? username : "(NULL)");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2288 msim_msg_dump("msim_postprocess_outgoing - scheduling lookup, msg=%s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2289 /* TODO: where is cloned message freed? Should be in _cb. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2290 msim_lookup_user(session, username, msim_postprocess_outgoing_cb, msim_msg_clone(msg));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2291 return TRUE; /* not sure of status yet - haven't sent! */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2292 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2293 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2294
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2295 /* Already have uid, postprocess and send msg immediately. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2296 purple_debug_info("msim", "msim_postprocess_outgoing: found username %s has uid %d\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2297 username ? username : "(NULL)", uid);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2298
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2299 msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2300
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2301 msim_msg_dump("msim_postprocess_outgoing: msg after (uid immediate)=%s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2302
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2303 rc = msim_msg_send(session, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2304
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2305 /* TODO: free
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2306 * msim_msg_free(msg);
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2307 */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2308
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2309 return rc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2310 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2311
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2312 /** Remove a buddy from the user's buddy list. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2313 void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2314 msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2315 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2316 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2317 MsimMessage *delbuddy_msg;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2318 MsimMessage *persist_msg;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2319 MsimMessage *blocklist_msg;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2320 GList *blocklist_updates;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2321
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2322 session = (MsimSession *)gc->proto_data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2323
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2324 delbuddy_msg = msim_msg_new(
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2325 "delbuddy", MSIM_TYPE_BOOLEAN, TRUE,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2326 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2327 /* 'delprofileid' with uid will be inserted here. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2328 NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2329
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2330 if (!msim_postprocess_outgoing(session, delbuddy_msg, buddy->name, "delprofileid", NULL)) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2331 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2332 msim_msg_free(delbuddy_msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2333 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2334 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2335 msim_msg_free(delbuddy_msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2336
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2337 persist_msg = msim_msg_new(
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2338 "persist", MSIM_TYPE_INTEGER, 1,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2339 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2340 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2341 "dsn", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_DSN,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2342 "lid", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_LID,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2343 "uid", MSIM_TYPE_INTEGER, session->userid,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2344 "rid", MSIM_TYPE_INTEGER, session->next_rid++,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2345 /* <uid> will be replaced by postprocessing */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2346 "body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"),
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2347 NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2348
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2349 if (!msim_postprocess_outgoing(session, persist_msg, buddy->name, "body", NULL)) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2350 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2351 msim_msg_free(persist_msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2352 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2353 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2354 msim_msg_free(persist_msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2355
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2356 blocklist_updates = NULL;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2357 blocklist_updates = g_list_prepend(blocklist_updates, "a-");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2358 blocklist_updates = g_list_prepend(blocklist_updates, "<uid>");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2359 blocklist_updates = g_list_prepend(blocklist_updates, "b-");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2360 blocklist_updates = g_list_prepend(blocklist_updates, "<uid>");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2361 blocklist_updates = g_list_reverse(blocklist_updates);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2362
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2363 blocklist_msg = msim_msg_new(
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2364 "blocklist", MSIM_TYPE_BOOLEAN, TRUE,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2365 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2366 /* TODO: MsimMessage lists. Currently <uid> isn't replaced in lists. */
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2367 /* "idlist", MSIM_TYPE_STRING, g_strdup("a-|<uid>|b-|<uid>"), */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2368 "idlist", MSIM_TYPE_LIST, blocklist_updates,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2369 NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2370
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2371 if (!msim_postprocess_outgoing(session, blocklist_msg, buddy->name, "idlist", NULL)) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2372 purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("blocklist command failed"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2373 msim_msg_free(blocklist_msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2374 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2375 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2376 msim_msg_free(blocklist_msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2377 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2378
22215
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2379 /**
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2380 * Returns a string of a username in canonical form. Basically removes all the
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2381 * spaces, lowercases the string, and looks up user IDs to usernames.
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2382 * Normalizing tom, TOM, Tom, and 6221 wil all return 'tom'.
22215
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2383 *
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2384 * Borrowed this code from oscar_normalize. Added checking for
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2385 * "if userid, get name before normalizing"
22215
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2386 */
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2387 const char *msim_normalize(const PurpleAccount *account, const char *str) {
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2388 static char normalized[BUF_LEN];
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2389 char *tmp1, *tmp2;
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2390 int i, j;
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2391 guint id;
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2392
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2393 g_return_val_if_fail(str != NULL, NULL);
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2394
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2395 if (msim_is_userid(str)) {
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2396 /* Have user ID, we need to get their username first :) */
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2397 const char *username;
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2398
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2399 /* If the account does not exist, we can't look up the user. */
22346
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
2400 if (!account)
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
2401 return str;
22345
5a2b46793bc7 Change msim_uid2username_from_blist to accept a PurpleAccount instead of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22344
diff changeset
2402
22215
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2403 id = atol(str);
22346
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
2404 username = msim_uid2username_from_blist((PurpleAccount *)account, id);
22215
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2405 if (!username) {
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2406 /* Not in buddy list... scheisse... TODO: Manual Lookup! Bug #4631 */
22215
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2407 /* Note: manual lookup using msim_lookup_user() is a problem inside
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2408 * msim_normalize(), because msim_lookup_user() calls a callback function
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2409 * when the user information has been looked up, but msim_normalize() expects
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2410 * the result immediately. */
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2411 strncpy(normalized, str, BUF_LEN);
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2412 } else {
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2413 strncpy(normalized, username, BUF_LEN);
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2414 }
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2415 } else {
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2416 /* Have username. */
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2417 strncpy(normalized, str, BUF_LEN);
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2418 }
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2419
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2420 /* Strip spaces. */
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2421 for (i=0, j=0; normalized[j]; i++, j++) {
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2422 while (normalized[j] == ' ')
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2423 j++;
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2424 normalized[i] = normalized[j];
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2425 }
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2426 normalized[i] = '\0';
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2427
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2428 /* Lowercase and perform UTF-8 normalization. */
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2429 tmp1 = g_utf8_strdown(normalized, -1);
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2430 tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT);
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2431 g_snprintf(normalized, sizeof(normalized), "%s", tmp2);
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2432 g_free(tmp2);
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2433 g_free(tmp1);
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2434
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2435 /* TODO: re-add caps and spacing back to what the user wanted.
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2436 * User can format their own names, for example 'msimprpl' is shown
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2437 * as 'MsIm PrPl' in the official client.
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2438 *
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2439 * TODO: file a ticket to add this enhancement.
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2440 */
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2441
22215
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2442 return normalized;
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2443 }
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
2444
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2445 /** Return whether the buddy can be messaged while offline.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2446 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2447 * The protocol supports offline messages in just the same way as online
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2448 * messages.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2449 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2450 gboolean
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2451 msim_offline_message(const PurpleBuddy *buddy)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2452 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2453 return TRUE;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2454 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2455
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2456 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2457 * Callback when input available.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2458 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2459 * @param gc_uncasted A PurpleConnection pointer.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2460 * @param source File descriptor.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2461 * @param cond PURPLE_INPUT_READ
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2462 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2463 * Reads the input, and calls msim_preprocess_incoming() to handle it.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2464 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2465 static void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2466 msim_input_cb(gpointer gc_uncasted, gint source, PurpleInputCondition cond)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2467 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2468 PurpleConnection *gc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2469 PurpleAccount *account;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2470 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2471 gchar *end;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2472 int n;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2473
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2474 g_return_if_fail(gc_uncasted != NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2475 g_return_if_fail(source >= 0); /* Note: 0 is a valid fd */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2476
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2477 gc = (PurpleConnection *)(gc_uncasted);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2478 account = purple_connection_get_account(gc);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2479 session = gc->proto_data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2480
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2481 /* libpurple/eventloop.h only defines these two */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2482 if (cond != PURPLE_INPUT_READ && cond != PURPLE_INPUT_WRITE) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2483 purple_debug_info("msim_input_cb", "unknown condition=%d\n", cond);
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
2484 purple_connection_error_reason (gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
2485 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20449
7ee73f97ee74 purple_connection_error_reason-ify myspace
Will Thompson <resiak@pidgin.im>
parents: 20319
diff changeset
2486 _("Invalid input condition"));
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2487 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2488 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2489
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2490 g_return_if_fail(cond == PURPLE_INPUT_READ);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2491 g_return_if_fail(MSIM_SESSION_VALID(session));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2492
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2493 /* Mark down that we got data, so we don't timeout. */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2494 session->last_comm = time(NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2495
22348
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2496 /* If approaching end of buffer, reallocate some more memory. */
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2497 if (session->rxsize < session->rxoff + MSIM_READ_BUF_SIZE) {
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2498 purple_debug_info("msim",
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2499 "msim_input_cb: %d-byte read buffer full, rxoff=%d, " "growing by %d bytes\n",
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2500 session->rxsize, session->rxoff, MSIM_READ_BUF_SIZE);
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2501 session->rxsize += MSIM_READ_BUF_SIZE;
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2502 session->rxbuf = g_realloc(session->rxbuf, session->rxsize);
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2503
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2504 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2505 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2506
22348
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2507 purple_debug_info("msim", "dynamic buffer at %d (max %d), reading up to %d\n",
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2508 session->rxoff, session->rxsize,
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2509 MSIM_READ_BUF_SIZE - session->rxoff - 1);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2510
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2511 /* Read into buffer. On Win32, need recv() not read(). session->fd also holds
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2512 * the file descriptor, but it sometimes differs from the 'source' parameter.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2513 */
22348
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2514 n = recv(session->fd,
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2515 session->rxbuf + session->rxoff,
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2516 session->rxsize - session->rxoff - 1, 0);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2517
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2518 if (n < 0 && errno == EAGAIN) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2519 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2520 } else if (n < 0) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2521 purple_debug_error("msim", "msim_input_cb: read error, ret=%d, "
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2522 "error=%s, source=%d, fd=%d (%X))\n",
21389
e1dd8142bb87 replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents: 21076
diff changeset
2523 n, g_strerror(errno), source, session->fd, session->fd);
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
2524 purple_connection_error_reason (gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
2525 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20449
7ee73f97ee74 purple_connection_error_reason-ify myspace
Will Thompson <resiak@pidgin.im>
parents: 20319
diff changeset
2526 _("Read error"));
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2527 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2528 } else if (n == 0) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2529 purple_debug_info("msim", "msim_input_cb: server disconnected\n");
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
2530 purple_connection_error_reason (gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
2531 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20449
7ee73f97ee74 purple_connection_error_reason-ify myspace
Will Thompson <resiak@pidgin.im>
parents: 20319
diff changeset
2532 _("Server has disconnected"));
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2533 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2534 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2535
22348
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2536 if (n + session->rxoff > session->rxsize) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2537 purple_debug_info("msim_input_cb", "received %d bytes, pushing rxoff to %d, over buffer size of %d\n",
22348
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2538 n, n + session->rxoff, session->rxsize);
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
2539 purple_connection_error_reason (gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
2540 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
22348
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2541 _("Read buffer full (2)"));
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2542 return;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2543 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2544
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2545 /* Null terminate */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2546 purple_debug_info("msim", "msim_input_cb: going to null terminate "
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2547 "at n=%d\n", n);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2548 session->rxbuf[session->rxoff + n] = 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2549
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2550 #ifdef MSIM_CHECK_EMBEDDED_NULLS
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2551 /* Check for embedded NULs. I don't handle them, and they shouldn't occur. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2552 if (strlen(session->rxbuf + session->rxoff) != n) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2553 /* Occurs after login, but it is not a null byte. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2554 purple_debug_info("msim", "msim_input_cb: strlen=%d, but read %d bytes"
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2555 "--null byte encountered?\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2556 strlen(session->rxbuf + session->rxoff), n);
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
2557 /*purple_connection_error_reason (gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
2558 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20449
7ee73f97ee74 purple_connection_error_reason-ify myspace
Will Thompson <resiak@pidgin.im>
parents: 20319
diff changeset
2559 "Invalid message - null byte on input"); */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2560 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2561 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2562 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2563
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2564 session->rxoff += n;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2565 purple_debug_info("msim", "msim_input_cb: read=%d\n", n);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2566
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2567 #ifdef MSIM_DEBUG_RXBUF
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2568 purple_debug_info("msim", "buf=<%s>\n", session->rxbuf);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2569 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2570
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2571 /* Look for \\final\\ end markers. If found, process message. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2572 while((end = strstr(session->rxbuf, MSIM_FINAL_STRING))) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2573 MsimMessage *msg;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2574
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2575 #ifdef MSIM_DEBUG_RXBUF
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2576 purple_debug_info("msim", "in loop: buf=<%s>\n", session->rxbuf);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2577 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2578 *end = 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2579 msg = msim_parse(g_strdup(session->rxbuf));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2580 if (!msg) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2581 purple_debug_info("msim", "msim_input_cb: couldn't parse rxbuf\n");
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
2582 purple_connection_error_reason (gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
2583 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20449
7ee73f97ee74 purple_connection_error_reason-ify myspace
Will Thompson <resiak@pidgin.im>
parents: 20319
diff changeset
2584 _("Unparseable message"));
22348
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2585 break;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2586 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2587 /* Process message and then free it (processing function should
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2588 * clone message if it wants to keep it afterwards.) */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2589 if (!msim_preprocess_incoming(session, msg)) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2590 msim_msg_dump("msim_input_cb: preprocessing message failed on msg: %s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2591 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2592 msim_msg_free(msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2593 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2594
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2595 /* Move remaining part of buffer to beginning. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2596 session->rxoff -= strlen(session->rxbuf) + strlen(MSIM_FINAL_STRING);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2597 memmove(session->rxbuf, end + strlen(MSIM_FINAL_STRING),
22348
4b0b743ba8c5 In msimprpl, grow the read buffer if it gets full using g_realloc(), similar to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22347
diff changeset
2598 session->rxsize - (end + strlen(MSIM_FINAL_STRING) - session->rxbuf));
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2599
22290
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2600 /* Clear end of buffer
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2601 * memset(end, 0, MSIM_READ_BUF_SIZE - (end - session->rxbuf));
327e5fda255e Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22215
diff changeset
2602 */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2603 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2604 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2605
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2606 /* Setup a callback, to be called when a reply is received with the returned rid.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2607 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2608 * @param cb The callback, an MSIM_USER_LOOKUP_CB.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2609 * @param data Arbitrary user data to be passed to callback (probably an MsimMessage *).
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2610 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2611 * @return The request/reply ID, used to link replies with requests, or -1.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2612 * Put the rid in your request, 'rid' field.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2613 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2614 * TODO: Make more generic and more specific:
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2615 * 1) MSIM_USER_LOOKUP_CB - make it for PERSIST_REPLY, not just user lookup
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2616 * 2) data - make it an MsimMessage?
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2617 */
19619
e9ac2df3fd1b In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19618
diff changeset
2618 guint
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2619 msim_new_reply_callback(MsimSession *session, MSIM_USER_LOOKUP_CB cb,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2620 gpointer data)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2621 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2622 guint rid;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2623
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2624 g_return_val_if_fail(MSIM_SESSION_VALID(session), -1);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2625
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2626 rid = session->next_rid++;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2627
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2628 g_hash_table_insert(session->user_lookup_cb, GUINT_TO_POINTER(rid), cb);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2629 g_hash_table_insert(session->user_lookup_cb_data, GUINT_TO_POINTER(rid), data);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2630
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2631 return rid;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2632 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2633
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2634 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2635 * Callback when connected. Sets up input handlers.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2636 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2637 * @param data A PurpleConnection pointer.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2638 * @param source File descriptor.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2639 * @param error_message
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2640 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2641 static void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2642 msim_connect_cb(gpointer data, gint source, const gchar *error_message)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2643 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2644 PurpleConnection *gc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2645 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2646
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2647 g_return_if_fail(data != NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2648
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2649 gc = (PurpleConnection *)data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2650 session = (MsimSession *)gc->proto_data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2651
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2652 if (source < 0) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
2653 purple_connection_error_reason (gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
2654 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20449
7ee73f97ee74 purple_connection_error_reason-ify myspace
Will Thompson <resiak@pidgin.im>
parents: 20319
diff changeset
2655 g_strdup_printf(_("Couldn't connect to host: %s (%d)"),
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2656 error_message ? error_message : "no message given",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2657 source));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2658 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2659 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2660
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2661 session->fd = source;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2662
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2663 gc->inpa = purple_input_add(source, PURPLE_INPUT_READ, msim_input_cb, gc);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2664 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2665
19617
c2da44d56312 In msimprpl, move session-related functions to a new session module.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19616
diff changeset
2666
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2667 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2668 * Close the connection.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2669 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2670 * @param gc The connection.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2671 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2672 void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2673 msim_close(PurpleConnection *gc)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2674 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2675 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2676
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2677 if (gc == NULL) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2678 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2679 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2680
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2681 session = (MsimSession *)gc->proto_data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2682 if (session == NULL)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2683 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2684
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2685 gc->proto_data = NULL;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2686
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2687 if (!MSIM_SESSION_VALID(session)) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2688 return;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2689 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2690
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2691 if (session->gc->inpa) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2692 purple_input_remove(session->gc->inpa);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2693 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2694
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2695 msim_session_destroy(session);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2696 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2697
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2698
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2699 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2700 * Obtain the status text for a buddy.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2701 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2702 * @param buddy The buddy to obtain status text for.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2703 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2704 * @return Status text, or NULL if error. Caller g_free()'s.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2705 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2706 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2707 char *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2708 msim_status_text(PurpleBuddy *buddy)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2709 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2710 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2711 MsimUser *user;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2712 const gchar *display_name, *headline;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2713
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2714 g_return_val_if_fail(buddy != NULL, NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2715
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2716 user = msim_get_user_from_buddy(buddy);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2717
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2718 session = (MsimSession *)buddy->account->gc->proto_data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2719 g_return_val_if_fail(MSIM_SESSION_VALID(session), NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2720
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2721 display_name = headline = NULL;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2722
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2723 /* Retrieve display name and/or headline, depending on user preference. */
21072
9faf3c372223 There's an #ifdef in MSIM which, if enabled, allows the user to specify
Kevin Stange <kstange@pidgin.im>
parents: 21058
diff changeset
2724 if (purple_account_get_bool(session->account, "show_headline", TRUE)) {
9faf3c372223 There's an #ifdef in MSIM which, if enabled, allows the user to specify
Kevin Stange <kstange@pidgin.im>
parents: 21058
diff changeset
2725 headline = user->headline;
9faf3c372223 There's an #ifdef in MSIM which, if enabled, allows the user to specify
Kevin Stange <kstange@pidgin.im>
parents: 21058
diff changeset
2726 }
9faf3c372223 There's an #ifdef in MSIM which, if enabled, allows the user to specify
Kevin Stange <kstange@pidgin.im>
parents: 21058
diff changeset
2727
9faf3c372223 There's an #ifdef in MSIM which, if enabled, allows the user to specify
Kevin Stange <kstange@pidgin.im>
parents: 21058
diff changeset
2728 if (purple_account_get_bool(session->account, "show_display_name", FALSE)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2729 display_name = user->display_name;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2730 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2731
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2732 /* Return appropriate combination of display name and/or headline, or neither. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2733
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2734 if (display_name && headline) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2735 return g_strconcat(display_name, " ", headline, NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2736 } else if (display_name) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2737 return g_strdup(display_name);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2738 } else if (headline) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2739 return g_strdup(headline);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2740 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2741
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2742 return NULL;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2743 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2744
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2745 /**
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2746 * Obtain the tooltip text for a buddy.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2747 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2748 * @param buddy Buddy to obtain tooltip text on.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2749 * @param user_info Variable modified to have the tooltip text.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2750 * @param full TRUE if should obtain full tooltip text.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2751 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2752 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2753 void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2754 msim_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2755 gboolean full)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2756 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2757 MsimUser *user;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2758
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2759 g_return_if_fail(buddy != NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2760 g_return_if_fail(user_info != NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2761
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2762 user = msim_get_user_from_buddy(buddy);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2763
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2764 if (PURPLE_BUDDY_IS_ONLINE(buddy)) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2765 MsimSession *session;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2766
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2767 session = (MsimSession *)buddy->account->gc->proto_data;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2768
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2769 g_return_if_fail(MSIM_SESSION_VALID(session));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2770
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2771 /* TODO: if (full), do something different? */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2772
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2773 /* TODO: request information? have to figure out how to do
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2774 * the asynchronous lookup like oscar does (tooltip shows
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2775 * 'retrieving...' if not yet available, then changes when it is).
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2776 *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2777 * Right now, only show what we have on hand.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2778 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2779
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2780 /* Show abbreviated user info. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2781 msim_append_user_info(session, user_info, user, FALSE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2782 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2783 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
2784
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2785 /** Add contact from server to buddy list, after looking up username.
19519
e4049e92eb22 Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19518
diff changeset
2786 * Callback from msim_add_contact_from_server().
e4049e92eb22 Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19518
diff changeset
2787 *
e4049e92eb22 Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19518
diff changeset
2788 * @param data An MsimMessage * of the contact information. Will be freed.
e4049e92eb22 Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19518
diff changeset
2789 */
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2790 static void
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2791 msim_add_contact_from_server_cb(MsimSession *session, MsimMessage *user_lookup_info, gpointer data)
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2792 {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2793 MsimMessage *contact_info, *user_lookup_info_body;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2794 PurpleGroup *group;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2795 PurpleBuddy *buddy;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2796 MsimUser *user;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2797 gchar *username, *group_name;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2798 guint uid;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2799
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2800 contact_info = (MsimMessage *)data;
22622
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22614
diff changeset
2801 purple_debug_info("msim_add_contact_from_server_cb", "contact_info addr=%p\n", contact_info);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2802 uid = msim_msg_get_integer(contact_info, "ContactID");
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2803
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2804 if (!user_lookup_info) {
22345
5a2b46793bc7 Change msim_uid2username_from_blist to accept a PurpleAccount instead of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22344
diff changeset
2805 username = g_strdup(msim_uid2username_from_blist(session->account, uid));
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2806 g_return_if_fail(username != NULL);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2807 } else {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2808 user_lookup_info_body = msim_msg_get_dictionary(user_lookup_info, "body");
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2809 username = msim_msg_get_string(user_lookup_info_body, "UserName");
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2810 msim_msg_free(user_lookup_info_body);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2811 g_return_if_fail(username != NULL);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2812 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2813
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2814 purple_debug_info("msim_add_contact_from_server_cb",
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2815 "*** about to add/update username=%s\n", username);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2816
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2817 /* 1. Creates a new group, or gets existing group if it exists (or so
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2818 * the documentation claims). */
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2819 group_name = msim_msg_get_string(contact_info, "GroupName");
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2820 if (group_name) {
22416
085ec4f5bfc8 In msimprpl, for server-side contacts, first search for an existing group
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22397
diff changeset
2821 group = purple_find_group(group_name);
085ec4f5bfc8 In msimprpl, for server-side contacts, first search for an existing group
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22397
diff changeset
2822 if (!group) {
085ec4f5bfc8 In msimprpl, for server-side contacts, first search for an existing group
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22397
diff changeset
2823 group = purple_group_new(group_name);
085ec4f5bfc8 In msimprpl, for server-side contacts, first search for an existing group
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22397
diff changeset
2824 /* Add group to beginning. See #2752. */
085ec4f5bfc8 In msimprpl, for server-side contacts, first search for an existing group
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22397
diff changeset
2825 purple_blist_add_group(group, NULL);
085ec4f5bfc8 In msimprpl, for server-side contacts, first search for an existing group
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22397
diff changeset
2826
085ec4f5bfc8 In msimprpl, for server-side contacts, first search for an existing group
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22397
diff changeset
2827 }
085ec4f5bfc8 In msimprpl, for server-side contacts, first search for an existing group
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22397
diff changeset
2828
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2829 purple_debug_info("msim_add_contact_from_server_cb",
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2830 "adding to GroupName: %s\n", group_name);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2831 g_free(group_name);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2832 } else {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2833 group = purple_group_new(_("IM Friends"));
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2834 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2835
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2836 /* 2. Get or create buddy */
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2837 buddy = purple_find_buddy(session->account, username);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2838 if (!buddy) {
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2839 purple_debug_info("msim_add_contact_from_server_cb",
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2840 "creating new buddy: %s\n", username);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2841 buddy = purple_buddy_new(session->account, username, NULL);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2842 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2843
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2844 /* TODO: use 'Position' in contact_info to take into account where buddy is */
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2845 purple_blist_add_buddy(buddy, NULL, group, NULL /* insertion point */);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2846
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2847 /* 3. Update buddy information */
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2848 user = msim_get_user_from_buddy(buddy);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2849
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2850 /* All buddies on list should have 'uid' integer associated with them. */
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2851 purple_blist_node_set_int(&buddy->node, "UserID", uid);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2852
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2853 /* Stores a few fields in the MsimUser, relevant to the buddy itself.
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2854 * AvatarURL, Headline, ContactID. */
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2855 msim_store_user_info(session, contact_info, NULL);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2856
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2857 /* TODO: other fields, store in 'user' */
19519
e4049e92eb22 Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19518
diff changeset
2858 msim_msg_free(contact_info);
22355
898841de866e In msim_uid2username_from_blist(), return a static string as the documentation
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22352
diff changeset
2859
898841de866e In msim_uid2username_from_blist(), return a static string as the documentation
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22352
diff changeset
2860 g_free(username);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2861 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2862
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2863 /** Add first ContactID in contact_info to buddy's list. Used to add
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2864 * server-side buddies to client-side list.
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2865 *
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2866 * @return TRUE if added.
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2867 * */
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2868 static gboolean
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2869 msim_add_contact_from_server(MsimSession *session, MsimMessage *contact_info)
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2870 {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2871 guint uid;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2872 const gchar *username;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2873
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2874 uid = msim_msg_get_integer(contact_info, "ContactID");
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2875 g_return_val_if_fail(uid != 0, FALSE);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2876
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2877 /* Lookup the username, since NickName and IMName is unreliable */
22345
5a2b46793bc7 Change msim_uid2username_from_blist to accept a PurpleAccount instead of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22344
diff changeset
2878 username = msim_uid2username_from_blist(session->account, uid);
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2879 if (!username) {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2880 gchar *uid_str;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2881
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2882 uid_str = g_strdup_printf("%d", uid);
19519
e4049e92eb22 Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19518
diff changeset
2883 purple_debug_info("msim_add_contact_from_server",
22622
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22614
diff changeset
2884 "contact_info addr=%p\n", contact_info);
19519
e4049e92eb22 Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19518
diff changeset
2885 msim_lookup_user(session, uid_str, msim_add_contact_from_server_cb, (gpointer)msim_msg_clone(contact_info));
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2886 g_free(uid_str);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2887 } else {
19519
e4049e92eb22 Fix crashes. In myspace.c, clone the contact_info message before sending it to
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19518
diff changeset
2888 msim_add_contact_from_server_cb(session, NULL, (gpointer)msim_msg_clone(contact_info));
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2889 }
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2890
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2891 /* Say that the contact was added, even if we're still looking up
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2892 * their username. */
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2893 return TRUE;
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2894 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2895
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2896 /** Called when contact list is received from server. */
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2897 static void
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2898 msim_got_contact_list(MsimSession *session, MsimMessage *reply, gpointer user_data)
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2899 {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2900 MsimMessage *body, *body_node;
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2901 gchar *msg;
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2902 guint buddy_count;
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2903
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2904 msim_msg_dump("msim_got_contact_list: reply=%s", reply);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2905
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2906 body = msim_msg_get_dictionary(reply, "body");
22346
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
2907 if (!body) {
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
2908 /* No friends. Not an error. */
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
2909 return;
b5e092d9f725 Fix incorrect indentation (use tabs instead of spaces) because of an
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22345
diff changeset
2910 }
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2911
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2912 buddy_count = 0;
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2913
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2914 for (body_node = body;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2915 body_node != NULL;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2916 body_node = msim_msg_get_next_element_node(body_node))
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2917 {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2918 MsimMessageElement *elem;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2919
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2920 elem = (MsimMessageElement *)body_node->data;
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2921
19606
afc90bd82e6d In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19605
diff changeset
2922 if (g_str_equal(elem->name, "ContactID"))
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2923 {
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2924 /* Will look for first contact in body_node */
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2925 if (msim_add_contact_from_server(session, body_node)) {
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2926 ++buddy_count;
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2927 }
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2928 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2929 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2930
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2931 switch (GPOINTER_TO_UINT(user_data)) {
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2932 case MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS:
19737
6e363a9b0699 Clarify message about contacts added from server, for #2918.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19731
diff changeset
2933 msg = g_strdup_printf(_("%d buddies were added or updated from the server (including buddies already on the server-side list)"), buddy_count);
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2934 purple_notify_info(session->account, _("Add contacts from server"), msg, NULL);
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2935 g_free(msg);
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2936 break;
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2937
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2938 case MSIM_CONTACT_LIST_IMPORT_TOP_FRIENDS:
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2939 /* TODO */
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2940 break;
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2941
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2942 case MSIM_CONTACT_LIST_INITIAL_FRIENDS:
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2943 /* Nothing */
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2944 break;
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2945 }
19531
799c0e65f51f Improve buddy importing. Count number of buddies being added, and
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19530
diff changeset
2946
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2947 msim_msg_free(body);
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2948 }
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2949
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2950 /* Get contact list, calling msim_got_contact_list() with what_to_do_after as user_data gpointer. */
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2951 static gboolean
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2952 msim_get_contact_list(MsimSession *session, int what_to_do_after)
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2953 {
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2954 return msim_send(session,
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2955 "persist", MSIM_TYPE_INTEGER, 1,
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2956 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2957 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET,
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2958 "dsn", MSIM_TYPE_INTEGER, MG_LIST_ALL_CONTACTS_DSN,
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2959 "lid", MSIM_TYPE_INTEGER, MG_LIST_ALL_CONTACTS_LID,
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2960 "uid", MSIM_TYPE_INTEGER, session->userid,
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2961 "rid", MSIM_TYPE_INTEGER,
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2962 msim_new_reply_callback(session, msim_got_contact_list, GUINT_TO_POINTER(what_to_do_after)),
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2963 "body", MSIM_TYPE_STRING, g_strdup(""),
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2964 NULL);
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2965 }
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2966
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2967
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2968 /** Called when friends have been imported to buddy list on server. */
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2969 static void
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2970 msim_import_friends_cb(MsimSession *session, MsimMessage *reply, gpointer user_data)
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2971 {
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2972 MsimMessage *body;
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2973 gchar *completed;
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2974 msim_msg_dump("msim_import_friends_cb=%s", reply);
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2975
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2976 /* Check if the friends were imported successfully. */
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2977 body = msim_msg_get_dictionary(reply, "body");
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2978 g_return_if_fail(body != NULL);
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2979 completed = msim_msg_get_string(body, "Completed");
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2980 g_return_if_fail(body != NULL);
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2981 msim_msg_free(body);
19606
afc90bd82e6d In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19605
diff changeset
2982 if (!g_str_equal(completed, "True"))
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2983 {
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2984 purple_debug_info("msim_import_friends_cb",
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2985 "failed to import friends: %s", completed);
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2986 purple_notify_error(session->account, _("Add friends from MySpace.com"),
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2987 _("Importing friends failed"), NULL);
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2988 g_free(completed);
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2989 return;
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2990 }
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2991 g_free(completed);
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2992
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2993 purple_debug_info("msim_import_friends_cb",
19518
5b592bad565a Initial implementation of friend importing. Not well tested.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19514
diff changeset
2994 "added friends to server-side buddy list, requesting new contacts from server");
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2995
19640
48e64a5069da On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19634
diff changeset
2996 msim_get_contact_list(session, MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS);
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2997
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2998 /* TODO: show, X friends have been added */
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
2999 }
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3000
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3001 /** Import friends from myspace.com. */
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3002 static void msim_import_friends(PurplePluginAction *action)
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3003 {
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3004 PurpleConnection *gc;
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3005 MsimSession *session;
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3006 gchar *group_name;
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3007
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3008 gc = (PurpleConnection *)action->context;
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3009 session = (MsimSession *)gc->proto_data;
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3010
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3011 group_name = "MySpace Friends";
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3012
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3013 g_return_if_fail(msim_send(session,
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3014 "persist", MSIM_TYPE_INTEGER, 1,
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3015 "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3016 "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_PUT,
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3017 "dsn", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_DSN,
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3018 "lid", MSIM_TYPE_INTEGER, MC_IMPORT_ALL_FRIENDS_LID,
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3019 "uid", MSIM_TYPE_INTEGER, session->userid,
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3020 "rid", MSIM_TYPE_INTEGER,
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3021 msim_new_reply_callback(session, msim_import_friends_cb, NULL),
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3022 "body", MSIM_TYPE_STRING,
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3023 g_strdup_printf("GroupName=%s", group_name),
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3024 NULL));
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3025
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3026
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3027 }
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3028
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3029 /** Actions menu for account. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3030 GList *
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3031 msim_actions(PurplePlugin *plugin, gpointer context)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3032 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3033 PurpleConnection *gc;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3034 GList *menu;
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3035 PurplePluginAction *act;
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3036
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3037 gc = (PurpleConnection *)context;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3038
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3039 menu = NULL;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3040
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3041 #if 0
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3042 /* TODO: find out how */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3043 act = purple_plugin_action_new(_("Find people..."), msim_);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3044 menu = g_list_append(menu, act);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3045
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3046 act = purple_plugin_action_new(_("Change IM name..."), NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3047 menu = g_list_append(menu, act);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3048 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3049
22077
7bf6baddaf97 Fixed a leak
Evan Schoenberg <evands@pidgin.im>
parents: 21874
diff changeset
3050 act = purple_plugin_action_new(_("Add friends from MySpace.com"), msim_import_friends);
19512
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3051 menu = g_list_append(menu, act);
040a04d43bbb First half of "Add friends from MySpace.com" support: add msim_import_friends(),
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19510
diff changeset
3052
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3053 return menu;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3054 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3055
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3056 /** Callbacks called by Purple, to access this plugin. */
20319
0808612cefa9 static this.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19958
diff changeset
3057 static PurplePluginProtocolInfo prpl_info = {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3058 /* options */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3059 OPT_PROTO_USE_POINTSIZE /* specify font size in sane point size */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3060 | OPT_PROTO_MAIL_CHECK,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3061
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3062 /* | OPT_PROTO_IM_IMAGE - TODO: direct images. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3063 NULL, /* user_splits */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3064 NULL, /* protocol_options */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3065 NO_BUDDY_ICONS, /* icon_spec - TODO: eventually should add this */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3066 msim_list_icon, /* list_icon */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3067 NULL, /* list_emblems */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3068 msim_status_text, /* status_text */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3069 msim_tooltip_text, /* tooltip_text */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3070 msim_status_types, /* status_types */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3071 msim_blist_node_menu, /* blist_node_menu */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3072 NULL, /* chat_info */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3073 NULL, /* chat_info_defaults */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3074 msim_login, /* login */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3075 msim_close, /* close */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3076 msim_send_im, /* send_im */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3077 NULL, /* set_info */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3078 msim_send_typing, /* send_typing */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3079 msim_get_info, /* get_info */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3080 msim_set_status, /* set_status */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3081 msim_set_idle, /* set_idle */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3082 NULL, /* change_passwd */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3083 msim_add_buddy, /* add_buddy */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3084 NULL, /* add_buddies */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3085 msim_remove_buddy, /* remove_buddy */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3086 NULL, /* remove_buddies */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3087 NULL, /* add_permit */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3088 NULL, /* add_deny */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3089 NULL, /* rem_permit */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3090 NULL, /* rem_deny */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3091 NULL, /* set_permit_deny */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3092 NULL, /* join_chat */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3093 NULL, /* reject chat invite */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3094 NULL, /* get_chat_name */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3095 NULL, /* chat_invite */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3096 NULL, /* chat_leave */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3097 NULL, /* chat_whisper */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3098 NULL, /* chat_send */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3099 NULL, /* keepalive */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3100 NULL, /* register_user */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3101 NULL, /* get_cb_info */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3102 NULL, /* get_cb_away */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3103 NULL, /* alias_buddy */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3104 NULL, /* group_buddy */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3105 NULL, /* rename_group */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3106 NULL, /* buddy_free */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3107 NULL, /* convo_closed */
22215
cafc97e3a50e Implement prpl_info->normalize for msimprpl, modified patch from Jaywalker.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 22077
diff changeset
3108 msim_normalize, /* normalize */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3109 NULL, /* set_buddy_icon */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3110 NULL, /* remove_group */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3111 NULL, /* get_cb_real_name */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3112 NULL, /* set_chat_topic */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3113 NULL, /* find_blist_chat */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3114 NULL, /* roomlist_get_list */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3115 NULL, /* roomlist_cancel */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3116 NULL, /* roomlist_expand_category */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3117 NULL, /* can_receive_file */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3118 NULL, /* send_file */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3119 NULL, /* new_xfer */
19506
0e4b5fe04c11 Re-apply the msimprpl-specific parts of revision
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19505
diff changeset
3120 msim_offline_message, /* offline_message */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3121 NULL, /* whiteboard_prpl_ops */
19506
0e4b5fe04c11 Re-apply the msimprpl-specific parts of revision
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19505
diff changeset
3122 msim_send_really_raw, /* send_raw */
0e4b5fe04c11 Re-apply the msimprpl-specific parts of revision
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19505
diff changeset
3123 NULL, /* roomlist_room_serialize */
19912
1aa572649c3f Fix up an apparently bad merge with the reserved fields here.
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
3124 NULL, /* unregister_user */
19506
0e4b5fe04c11 Re-apply the msimprpl-specific parts of revision
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19505
diff changeset
3125 msim_send_attention, /* send_attention */
0e4b5fe04c11 Re-apply the msimprpl-specific parts of revision
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19505
diff changeset
3126 msim_attention_types, /* attention_types */
22071
4c47e360e467 Fix the prplinfo structs and get rid of some compile warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22069
diff changeset
3127 sizeof(PurplePluginProtocolInfo), /* struct_size */
22648
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22647
diff changeset
3128 NULL, /* initiate_media */
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22647
diff changeset
3129 NULL /* can_do_media */
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3130 };
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3131
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3132
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3133
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3134 /** Based on MSN's plugin info comments. */
19926
fd8c090b8516 Protocol's (and other plugin's) PurplePluginInfo structs should really be
Etan Reisner <deryni@pidgin.im>
parents: 19913
diff changeset
3135 static PurplePluginInfo info = {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3136 PURPLE_PLUGIN_MAGIC,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3137 PURPLE_MAJOR_VERSION,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3138 PURPLE_MINOR_VERSION,
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3139 PURPLE_PLUGIN_PROTOCOL, /**< type */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3140 NULL, /**< ui_requirement */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3141 0, /**< flags */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3142 NULL, /**< dependencies */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3143 PURPLE_PRIORITY_DEFAULT, /**< priority */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3144
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3145 "prpl-myspace", /**< id */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3146 "MySpaceIM", /**< name */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3147 MSIM_PRPL_VERSION_STRING, /**< version */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3148 /** summary */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3149 "MySpaceIM Protocol Plugin",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3150 /** description */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3151 "MySpaceIM Protocol Plugin",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3152 "Jeff Connelly <jeff2@soc.pidgin.im>", /**< author */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3153 "http://developer.pidgin.im/wiki/MySpaceIM/", /**< homepage */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3154
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3155 msim_load, /**< load */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3156 NULL, /**< unload */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3157 NULL, /**< destroy */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3158 NULL, /**< ui_info */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3159 &prpl_info, /**< extra_info */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3160 NULL, /**< prefs_info */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3161 msim_actions, /**< msim_actions */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3162 NULL, /**< reserved1 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3163 NULL, /**< reserved2 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3164 NULL, /**< reserved3 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3165 NULL /**< reserved4 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3166 };
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3167
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3168
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3169 #ifdef MSIM_SELF_TEST
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3170 /** Test functions.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3171 * Used to test or try out the internal workings of msimprpl. If you're reading
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3172 * this code for the first time, these functions can be instructive in learning
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3173 * how msimprpl is architected.
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3174 */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3175 void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3176 msim_test_all(void) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3177 guint failures;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3178
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3179
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3180 failures = 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3181 failures += msim_test_msg();
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3182 failures += msim_test_escaping();
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3183
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3184 if (failures) {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3185 purple_debug_info("msim", "msim_test_all HAD FAILURES: %d\n", failures);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3186 } else {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3187 purple_debug_info("msim", "msim_test_all - all tests passed!\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3188 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3189 exit(0);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3190 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3191
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3192 /** Test MsimMessage for basic functionality. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3193 int
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3194 msim_test_msg(void)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3195 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3196 MsimMessage *msg, *msg_cloned, *msg2;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3197 GList *list;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3198 gchar *packed, *packed_expected, *packed_cloned;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3199 guint failures;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3200
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3201 failures = 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3202
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3203 purple_debug_info("msim", "\n\nTesting MsimMessage\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3204 msg = msim_msg_new(NULL); /* Create a new, empty message. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3205
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3206 /* Append some new elements. */
20720
f1ee0fdfcc0a Fix lots of little memory leaks in the MySpace protocol plugin.
Mark Doliner <markdoliner@pidgin.im>
parents: 20671
diff changeset
3207 msg = msim_msg_append(msg, "bx", MSIM_TYPE_BINARY, g_string_new_len("XXX", 3));
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3208 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v1"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3209 msg = msim_msg_append(msg, "k1", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(42));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3210 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v43"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3211 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v52/xxx\\yyy"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3212 msg = msim_msg_append(msg, "k1", MSIM_TYPE_STRING, g_strdup("v7"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3213 msim_msg_dump("msg debug str=%s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3214 packed = msim_msg_pack(msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3215
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3216 purple_debug_info("msim", "msg packed=%s\n", packed);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3217
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3218 packed_expected = "\\bx\\WFhY\\k1\\v1\\k1\\42\\k1"
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3219 "\\v43\\k1\\v52/1xxx/2yyy\\k1\\v7\\final\\";
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3220
19606
afc90bd82e6d In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19605
diff changeset
3221 if (!g_str_equal(packed, packed_expected)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3222 purple_debug_info("msim", "!!!(%d), msim_msg_pack not what expected: %s != %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3223 ++failures, packed, packed_expected);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3224 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3225
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3226
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3227 msg_cloned = msim_msg_clone(msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3228 packed_cloned = msim_msg_pack(msg_cloned);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3229
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3230 purple_debug_info("msim", "msg cloned=%s\n", packed_cloned);
19606
afc90bd82e6d In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19605
diff changeset
3231 if (!g_str_equal(packed, packed_cloned)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3232 purple_debug_info("msim", "!!!(%d), msim_msg_pack on cloned message not equal to original: %s != %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3233 ++failures, packed_cloned, packed);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3234 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3235
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3236 g_free(packed);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3237 g_free(packed_cloned);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3238 msim_msg_free(msg_cloned);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3239 msim_msg_free(msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3240
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3241 /* Try some of the more advanced functionality */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3242 list = NULL;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3243
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3244 list = g_list_prepend(list, "item3");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3245 list = g_list_prepend(list, "item2");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3246 list = g_list_prepend(list, "item1");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3247 list = g_list_prepend(list, "item0");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3248
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3249 msg = msim_msg_new(NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3250 msg = msim_msg_append(msg, "string", MSIM_TYPE_STRING, g_strdup("string value"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3251 msg = msim_msg_append(msg, "raw", MSIM_TYPE_RAW, g_strdup("raw value"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3252 msg = msim_msg_append(msg, "integer", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(3140));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3253 msg = msim_msg_append(msg, "boolean", MSIM_TYPE_BOOLEAN, GUINT_TO_POINTER(FALSE));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3254 msg = msim_msg_append(msg, "list", MSIM_TYPE_LIST, list);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3255
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3256 msim_msg_dump("msg with list=%s\n", msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3257 purple_debug_info("msim", "msg with list packed=%s\n", msim_msg_pack(msg));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3258
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3259 msg2 = msim_msg_new(NULL);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3260 msg2 = msim_msg_append(msg2, "outer", MSIM_TYPE_STRING, g_strdup("outer value"));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3261 msg2 = msim_msg_append(msg2, "body", MSIM_TYPE_DICTIONARY, msg);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3262 msim_msg_dump("msg with dict=%s\n", msg2); /* msg2 now 'owns' msg */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3263 purple_debug_info("msim", "msg with dict packed=%s\n", msim_msg_pack(msg2));
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3264
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3265 msim_msg_free(msg2);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3266
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3267 return failures;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3268 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3269
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3270 /** Test protocol-level escaping/unescaping. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3271 int
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3272 msim_test_escaping(void)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3273 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3274 guint failures;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3275 gchar *raw, *escaped, *unescaped, *expected;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3276
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3277 failures = 0;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3278
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3279 purple_debug_info("msim", "\n\nTesting escaping\n");
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3280
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3281 raw = "hello/world\\hello/world";
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3282
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3283 escaped = msim_escape(raw);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3284 purple_debug_info("msim", "msim_test_escaping: raw=%s, escaped=%s\n", raw, escaped);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3285 expected = "hello/1world/2hello/1world";
19606
afc90bd82e6d In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19605
diff changeset
3286 if (!g_str_equal(escaped, expected)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3287 purple_debug_info("msim", "!!!(%d), msim_escape failed: %s != %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3288 ++failures, escaped, expected);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3289 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3290
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3291
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3292 unescaped = msim_unescape(escaped);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3293 g_free(escaped);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3294 purple_debug_info("msim", "msim_test_escaping: unescaped=%s\n", unescaped);
19606
afc90bd82e6d In msimprpl, replace !strcmp() with g_str_equal() everywhere.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19605
diff changeset
3295 if (!g_str_equal(raw, unescaped)) {
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3296 purple_debug_info("msim", "!!!(%d), msim_unescape failed: %s != %s\n",
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3297 ++failures, raw, unescaped);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3298 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3299
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3300 return failures;
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3301 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3302 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3303
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3304 static gboolean
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3305 msim_uri_handler(const gchar *proto, const gchar *cmd, GHashTable *params)
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3306 {
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3307 PurpleAccount *account;
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3308 MsimSession *session;
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3309 GList *l;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3310 gchar *uid_str, *cid_str;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3311 guint uid, cid;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3312
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3313 if (g_ascii_strcasecmp(proto, "myim"))
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3314 return FALSE;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3315
19625
b9a2aa87bc27 In msimprpl, fix the msim_uri_handler(). The sendIM and addContact commands
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19621
diff changeset
3316 /* Parameters are case-insensitive. */
b9a2aa87bc27 In msimprpl, fix the msim_uri_handler(). The sendIM and addContact commands
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19621
diff changeset
3317 uid_str = g_hash_table_lookup(params, "uid");
b9a2aa87bc27 In msimprpl, fix the msim_uri_handler(). The sendIM and addContact commands
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19621
diff changeset
3318 cid_str = g_hash_table_lookup(params, "cid");
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3319
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3320 uid = uid_str ? atol(uid_str) : 0;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3321 cid = cid_str ? atol(cid_str) : 0;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3322
19625
b9a2aa87bc27 In msimprpl, fix the msim_uri_handler(). The sendIM and addContact commands
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19621
diff changeset
3323 /* Need a contact. */
b9a2aa87bc27 In msimprpl, fix the msim_uri_handler(). The sendIM and addContact commands
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19621
diff changeset
3324 g_return_val_if_fail(cid != 0, FALSE);
b9a2aa87bc27 In msimprpl, fix the msim_uri_handler(). The sendIM and addContact commands
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19621
diff changeset
3325
19634
30bbe39b35db In msimprpl: if no local alias is set, set it to the username on sign-on.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19633
diff changeset
3326 /* TODO: if auto=true, "Add all the people on this page to my IM List!", on
30bbe39b35db In msimprpl: if no local alias is set, set it to the username on sign-on.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19633
diff changeset
3327 * http://collect.myspace.com/index.cfm?fuseaction=im.friendslist. Don't need a cid. */
30bbe39b35db In msimprpl: if no local alias is set, set it to the username on sign-on.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19633
diff changeset
3328
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3329 /* Convert numeric contact ID back to a string. Needed for looking up. Don't just
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3330 * directly use cid directly from parameters, because it might not be numeric.
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3331 * It is trivial to change this to allow cID to be a username, but that's not how
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3332 * the official MySpaceIM client works, so don't provide that functionality. */
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3333 cid_str = g_strdup_printf("%d", cid);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3334
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3335
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3336 /* Find our account with specified user id, or use first connected account if uid=0. */
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3337 account = NULL;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3338 l = purple_accounts_get_all();
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3339 while (l) {
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3340 if (purple_account_is_connected(l->data) &&
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3341 (uid == 0 || purple_account_get_int(l->data, "uid", 0) == uid)) {
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3342 account = l->data;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3343 break;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3344 }
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3345 l = l->next;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3346 }
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3347
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3348 if (!account) {
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3349 purple_notify_error(NULL, _("myim URL handler"),
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3350 _("No suitable MySpaceIM account could be found to open this myim URL."),
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3351 _("Enable the proper MySpaceIM account and try again."));
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3352 g_free(cid_str);
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3353 return FALSE;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3354 }
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3355
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3356 session = (MsimSession *)account->gc->proto_data;
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3357 g_return_val_if_fail(session != NULL, FALSE);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3358
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3359 /* Lookup userid to username. TODO: push this down, to IM sending/contact
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3360 * adding functions. */
19625
b9a2aa87bc27 In msimprpl, fix the msim_uri_handler(). The sendIM and addContact commands
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19621
diff changeset
3361
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3362 /* myim:sendIM?uID=USERID&cID=CONTACTID */
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3363 if (!g_ascii_strcasecmp(cmd, "sendIM")) {
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3364 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_sendIM_cb, NULL);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3365 g_free(cid_str);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3366 return TRUE;
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3367
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3368 /* myim:addContact?uID=USERID&cID=CONTACTID */
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3369 } else if (!g_ascii_strcasecmp(cmd, "addContact")) {
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3370 msim_lookup_user(session, cid_str, (MSIM_USER_LOOKUP_CB)msim_uri_handler_addContact_cb, NULL);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3371 g_free(cid_str);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3372 return TRUE;
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3373 }
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3374
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3375 return FALSE;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3376 }
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3377
19633
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3378 /* TODO: move uid->username resolving to IM sending and buddy adding functions,
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3379 * so that user can manually add or IM by userid and username automatically
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3380 * looked up if possible? */
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3381
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3382 /** Handle a myim:sendIM URI command, after username has been looked up. */
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3383 static void
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3384 msim_uri_handler_sendIM_cb(MsimSession *session, MsimMessage *userinfo, gpointer data)
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3385 {
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3386 PurpleConversation *conv;
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3387 MsimMessage *body;
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3388 gchar *username;
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3389
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3390 body = msim_msg_get_dictionary(userinfo, "body");
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3391 username = msim_msg_get_string(body, "UserName");
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3392 msim_msg_free(body);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3393
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3394 if (!username) {
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3395 guint uid;
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3396
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3397 uid = msim_msg_get_integer(userinfo, "UserID");
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3398 g_return_if_fail(uid != 0);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3399
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3400 username = g_strdup_printf("%d", uid);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3401 }
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3402
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3403
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3404 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, username, session->account);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3405 if (!conv) {
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3406 purple_debug_info("msim_uri_handler", "creating new conversation for %s\n", username);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3407 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, session->account, username);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3408 }
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3409
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3410 /* Just open the window so the user can send an IM. */
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3411 purple_conversation_present(conv);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3412
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3413 g_free(username);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3414 }
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3415
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3416 /** Handle a myim:addContact command, after username has been looked up. */
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3417 static void
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3418 msim_uri_handler_addContact_cb(MsimSession *session, MsimMessage *userinfo, gpointer data)
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3419 {
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3420 MsimMessage *body;
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3421 gchar *username;
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3422
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3423 body = msim_msg_get_dictionary(userinfo, "body");
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3424 username = msim_msg_get_string(body, "UserName");
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3425 msim_msg_free(body);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3426
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3427 if (!username) {
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3428 guint uid;
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3429
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3430 uid = msim_msg_get_integer(userinfo, "UserID");
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3431 g_return_if_fail(uid != 0);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3432
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3433 username = g_strdup_printf("%d", uid);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3434 }
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3435
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3436
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3437 purple_blist_request_add_buddy(session->account, username, _("Buddies"), NULL);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3438
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3439 g_free(username);
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3440 }
ad1278e9223f For myim: (MySpaceIM) URLs, lookup the contact ID into a username before
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19625
diff changeset
3441
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3442 /** Initialize plugin. */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3443 void
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3444 init_plugin(PurplePlugin *plugin)
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3445 {
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3446 #ifdef MSIM_SELF_TEST
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3447 msim_test_all();
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3448 exit(0);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3449 #endif /* MSIM_SELF_TEST */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3450
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3451 PurpleAccountOption *option;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3452 static gboolean initialized = FALSE;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3453
19741
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
3454 #ifdef MSIM_CHECK_NEWER_VERSION
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
3455 /* PROBLEM: MySpace's servers always return Content-Location, and
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
3456 * libpurple redirects to it, infinitely, even though it is the same
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
3457 * location we requested! */
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
3458 purple_util_fetch_url("http://im.myspace.com/nsis/currentversion.txt",
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
3459 FALSE, /* not full URL */
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
3460 "MSIMAutoUpdateAgent", /* user agent */
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
3461 TRUE, /* use HTTP/1.1 */
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
3462 msim_check_newer_version_cb, NULL);
f6f0aff2ef68 If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19740
diff changeset
3463 #endif
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3464
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3465 /* TODO: default to automatically try different ports. Make the user be
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3466 * able to set the first port to try (like LastConnectedPort in Windows client). */
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3467 option = purple_account_option_string_new(_("Connect server"), "server", MSIM_SERVER);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3468 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3469
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3470 option = purple_account_option_int_new(_("Connect port"), "port", MSIM_PORT);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3471 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3472
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3473 #ifdef MSIM_USER_WANTS_TO_CONFIGURE_STATUS_TEXT
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3474 option = purple_account_option_bool_new(_("Show display name in status text"), "show_display_name", TRUE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3475 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3476
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3477 option = purple_account_option_bool_new(_("Show headline in status text"), "show_headline", TRUE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3478 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3479 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3480
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3481 #ifdef MSIM_USER_WANTS_TO_DISABLE_EMOTICONS
19938
a711277dac04 The 'Send Emoticons' preferences (which is only configurable if MSIM_USER_WANTS_TO_DISABLE_EMOTICONS is defined) defaults to TRUE when used, a reasonable default. The preference, if MSIM_USER_WANTS_TO_DISABLE_EMOTICONS is defined, should do the same.
Evan Schoenberg <evands@pidgin.im>
parents: 19926
diff changeset
3482 option = purple_account_option_bool_new(_("Send emoticons"), "emoticons", TRUE);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3483 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3484 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3485
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3486 #ifdef MSIM_USER_REALLY_CARES_ABOUT_PRECISE_FONT_SIZES
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3487 option = purple_account_option_int_new(_("Screen resolution (dots per inch)"), "dpi", MSIM_DEFAULT_DPI);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3488 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3489
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3490 option = purple_account_option_int_new(_("Base font size (points)"), "base_font_size", MSIM_BASE_FONT_POINT_SIZE);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3491 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3492 #endif
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3493
19620
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3494 /* Code below only runs once. Based on oscar.c's oscar_init(). */
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3495 if (initialized)
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3496 return;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3497
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3498 initialized = TRUE;
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3499
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3500 purple_signal_connect(purple_get_core(), "uri-handler", &initialized,
238f24594c04 Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19619
diff changeset
3501 PURPLE_CALLBACK(msim_uri_handler), NULL);
19505
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3502 }
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3503
6199132c5266 merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19171 19172
diff changeset
3504 PURPLE_INIT_PLUGIN(myspace, init_plugin, info);

mercurial