Sat, 22 Mar 2008 04:45:46 +0000
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>
diff
changeset
|
1 | /* MySpaceIM Protocol Plugin |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3 | * \author Jeff Connelly |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
4 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
5 | * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im> |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
6 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
7 | * Based on Purple's "C Plugin HOWTO" hello world example. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
8 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
9 | * Code also drawn from mockprpl: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
10 | * http://snarfed.org/space/purple+mock+protocol+plugin |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
11 | * Copyright (C) 2004-2007, Ryan Barrett <mockprpl@ryanb.org> |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
12 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
13 | * and some constructs also based on existing Purple plugins, which are: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
14 | * Copyright (C) 2003, Robbert Haarman <purple@inglorion.net> |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
15 | * Copyright (C) 2003, Ethan Blanton <eblanton@cs.purdue.edu> |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
16 | * Copyright (C) 2000-2003, Rob Flynn <rob@tgflinux.com> |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
17 | * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
18 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
21 | * the Free Software Foundation; either version 2 of the License, or |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
22 | * (at your option) any later version. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
23 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
25 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
26 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
27 | * GNU General Public License for more details. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
28 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
32 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
33 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
34 | #define PURPLE_PLUGIN |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
35 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
36 | #include "myspace.h" |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
37 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
38 | /* Internal functions */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
39 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
40 | #ifdef MSIM_DEBUG_MSG |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
42 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
49 | static gboolean msim_incoming_bm(MsimSession *session, MsimMessage *msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
50 | static gboolean msim_incoming_status(MsimSession *session, MsimMessage *msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
53 | static gboolean msim_incoming_action(MsimSession *session, MsimMessage *msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
54 | static gboolean msim_incoming_media(MsimSession *session, MsimMessage *msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
55 | static gboolean msim_incoming_unofficial_client(MsimSession *session, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
56 | MsimMessage *msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
57 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
60 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
61 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
67 | static gboolean msim_web_challenge(MsimSession *session, MsimMessage *msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
68 | static gboolean msim_process_reply(MsimSession *session, MsimMessage *msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
71 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
72 | #ifdef MSIM_USE_KEEPALIVE |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
73 | static gboolean msim_check_alive(gpointer data); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
74 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
77 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
78 | static gboolean msim_process(MsimSession *session, MsimMessage *msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
83 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
84 | static gboolean msim_error(MsimSession *session, MsimMessage *msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
87 | static gboolean msim_check_inbox(gpointer data); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
102 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
103 | * Load the plugin. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
104 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
105 | gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
106 | msim_load(PurplePlugin *plugin) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
107 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
109 | if (!purple_ciphers_find_cipher("rc4")) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
111 | purple_notify_error(plugin, _("Missing Cipher"), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
112 | _("The RC4 cipher could not be found"), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
113 | _("Upgrade " |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
114 | "to a libpurple with RC4 support (>= 2.0.1). MySpaceIM " |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
115 | "plugin will not be loaded.")); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
116 | return FALSE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
117 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
118 | return TRUE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
121 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
122 | * Get possible user status types. Based on mockprpl. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
123 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
124 | * @return GList of status types. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
125 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
126 | GList * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
127 | msim_status_types(PurpleAccount *acct) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
128 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
129 | GList *types; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
130 | PurpleStatusType *status; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
131 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
132 | purple_debug_info("myspace", "returning status types\n"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
133 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
134 | types = NULL; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
137 | #define _MSIM_ADD_NEW_STATUS(prim) status = \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
138 | purple_status_type_new_with_attrs( \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
139 | prim, /* PurpleStatusPrimitive */ \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
140 | NULL, /* id - use default */ \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
141 | NULL, /* name - use default */ \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
142 | TRUE, /* savable */ \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
143 | TRUE, /* user_settable */ \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
144 | FALSE, /* not independent */ \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
145 | \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
146 | /* Attributes - each status can have a message. */ \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
147 | "message", \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
148 | _("Message"), \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
149 | purple_value_new(PURPLE_TYPE_STRING), \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
150 | NULL); \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
151 | \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
152 | \ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
153 | types = g_list_append(types, status) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
154 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
155 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
156 | _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
157 | _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_AWAY); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
158 | _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_OFFLINE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
159 | _MSIM_ADD_NEW_STATUS(PURPLE_STATUS_INVISIBLE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
175 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
176 | return types; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
177 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
178 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
179 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
180 | * Return the icon name for a buddy and account. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
181 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
184 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
185 | * @return The base icon name string. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
186 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
187 | const gchar * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
188 | msim_list_icon(PurpleAccount *acct, PurpleBuddy *buddy) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
189 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
190 | /* Use a MySpace icon submitted by hbons at |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
191 | * http://developer.pidgin.im/wiki/MySpaceIM. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
192 | return "myspace"; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
193 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
194 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
195 | #ifdef MSIM_DEBUG_MSG |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
196 | static void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
197 | print_hash_item(gpointer key, gpointer value, gpointer user_data) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
198 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
199 | purple_debug_info("msim", "%s=%s\n", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
200 | key ? (gchar *)key : "(NULL)", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
201 | value ? (gchar *)value : "(NULL)"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
202 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
203 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
204 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
205 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
207 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
208 | * @param session |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
210 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
211 | * @return TRUE if succeeded, FALSE if not. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
212 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
213 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
214 | gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
215 | msim_send_raw(MsimSession *session, const gchar *msg) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
216 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
217 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
218 | g_return_val_if_fail(msg != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
219 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
220 | purple_debug_info("msim", "msim_send_raw: writing <%s>\n", msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
221 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
222 | return msim_send_really_raw(session->gc, msg, strlen(msg)) == |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
223 | strlen(msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
224 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
225 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
226 | /** Send raw data to the server, possibly with embedded NULs. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
227 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
229 | * control of what is sent over the connection. Inside this prpl, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
231 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
232 | * @param gc PurpleConnection |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
233 | * @param buf Buffer to send |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
234 | * @param total_bytes Size of buffer to send |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
235 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
236 | * @return Bytes successfully sent, or -1 on error. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
237 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
238 | static int |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
240 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
241 | int total_bytes_sent; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
242 | MsimSession *session; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
243 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
244 | g_return_val_if_fail(gc != NULL, -1); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
245 | g_return_val_if_fail(buf != NULL, -1); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
246 | g_return_val_if_fail(total_bytes >= 0, -1); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
247 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
248 | session = (MsimSession *)gc->proto_data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
249 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
250 | g_return_val_if_fail(MSIM_SESSION_VALID(session), -1); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
251 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
252 | /* Loop until all data is sent, or a failure occurs. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
253 | total_bytes_sent = 0; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
254 | do { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
255 | int bytes_sent; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
256 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
257 | bytes_sent = send(session->fd, buf + total_bytes_sent, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
258 | total_bytes - total_bytes_sent, 0); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
259 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
260 | if (bytes_sent < 0) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
262 | buf, g_strerror(errno)); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
263 | return total_bytes_sent; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
264 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
265 | total_bytes_sent += bytes_sent; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
266 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
267 | } while(total_bytes_sent < total_bytes); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
268 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
269 | return total_bytes_sent; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
270 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
271 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
272 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
273 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
274 | * Start logging in to the MSIM servers. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
275 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
276 | * @param acct Account information to use to login. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
277 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
278 | void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
279 | msim_login(PurpleAccount *acct) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
280 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
281 | PurpleConnection *gc; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
282 | const gchar *host; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
283 | int port; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
284 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
285 | g_return_if_fail(acct != NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
286 | g_return_if_fail(acct->username != NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
287 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
288 | purple_debug_info("msim", "logging in %s\n", acct->username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
289 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
290 | gc = purple_account_get_connection(acct); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
291 | gc->proto_data = msim_session_new(acct); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
292 | gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_URLDESC; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
293 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
294 | /* 1. connect to server */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
295 | purple_connection_update_progress(gc, _("Connecting"), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
296 | 0, /* which connection step this is */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
297 | 4); /* total number of steps */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
298 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
299 | host = purple_account_get_string(acct, "server", MSIM_SERVER); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
300 | port = purple_account_get_int(acct, "port", MSIM_PORT); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
301 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
302 | /* From purple.sf.net/api: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
304 | * "proxy connect," it is used for establishing any outgoing TCP connection, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
305 | * whether through a proxy or not.""" */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
306 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
307 | /* Calls msim_connect_cb when connected. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
309 | /* TODO: try other ports if in auto mode, then save |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
310 | * working port and try that first next time. */ |
| 21279 | 311 | purple_connection_error_reason (gc, |
| 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>
diff
changeset
|
314 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
315 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
316 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
317 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
318 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
319 | * Process a login challenge, sending a response. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
320 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
321 | * @param session |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
322 | * @param msg Login challenge message. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
323 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
324 | * @return TRUE if successful, FALSE if not |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
325 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
326 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
327 | msim_login_challenge(MsimSession *session, MsimMessage *msg) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
328 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
331 | guint response_len; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
332 | gchar *nc; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
335 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
336 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
337 | g_return_val_if_fail(msg != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
338 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
340 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
341 | account = session->account; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
342 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
343 | g_return_val_if_fail(account != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
344 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
345 | purple_connection_update_progress(session->gc, _("Reading challenge"), 1, 4); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
349 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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 | 353 | purple_connection_error_reason (session->gc, |
| 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>
diff
changeset
|
356 | return FALSE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
357 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
358 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
359 | purple_connection_update_progress(session->gc, _("Logging in"), 2, 4); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
360 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
361 | response_len = 0; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
363 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
364 | g_free(nc); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
367 | "login2", MSIM_TYPE_INTEGER, MSIM_AUTH_ALGORITHM, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
368 | /* This is actually user's email address. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
371 | "response", MSIM_TYPE_BINARY, g_string_new_len(response, response_len), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
372 | "clientver", MSIM_TYPE_INTEGER, MSIM_CLIENT_VERSION, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
373 | "langid", MSIM_TYPE_INTEGER, MSIM_LANGUAGE_ID_ENGLISH, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
374 | "imlang", MSIM_TYPE_STRING, g_strdup(MSIM_LANGUAGE_NAME_ENGLISH), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
375 | "reconn", MSIM_TYPE_INTEGER, 0, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
376 | "status", MSIM_TYPE_INTEGER, 100, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
377 | "id", MSIM_TYPE_INTEGER, 1, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
383 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
384 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
385 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
387 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
388 | * @param nonce The base64 encoded nonce ('nc') field from the server. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
389 | * @param email User's email address (used as login name). |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
390 | * @param password User's cleartext password. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
391 | * @param response_len Will be written with response length. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
392 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
393 | * @return Binary login challenge response, ready to send to the server. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
394 | * Must be g_free()'d when finished. NULL if error. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
397 | msim_compute_login_response(const gchar nonce[2 * NONCE_SIZE], |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
398 | const gchar *email, const gchar *password, guint *response_len) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
399 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
400 | PurpleCipherContext *key_context; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
401 | PurpleCipher *sha1; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
402 | PurpleCipherContext *rc4; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
403 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
404 | guchar hash_pw[HASH_SIZE]; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
405 | guchar key[HASH_SIZE]; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
406 | gchar *password_utf16le, *password_utf8_lc; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
407 | guchar *data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
408 | guchar *data_out; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
409 | size_t data_len, data_out_len; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
410 | gsize conv_bytes_read, conv_bytes_written; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
411 | GError *conv_error; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
412 | #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
413 | int i; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
414 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
415 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
416 | g_return_val_if_fail(nonce != NULL, NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
417 | g_return_val_if_fail(email != NULL, NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
418 | g_return_val_if_fail(password != NULL, NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
419 | g_return_val_if_fail(response_len != NULL, NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
420 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
421 | /* Convert password to lowercase (required for passwords containing |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
422 | * uppercase characters). MySpace passwords are lowercase, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
423 | * see ticket #2066. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
424 | password_utf8_lc = g_utf8_strdown(password, -1); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
425 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
426 | /* Convert ASCII password to UTF16 little endian */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
427 | purple_debug_info("msim", "converting password to UTF-16LE\n"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
428 | conv_error = NULL; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
430 | &conv_bytes_read, &conv_bytes_written, &conv_error); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
431 | g_free(password_utf8_lc); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
432 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
433 | g_return_val_if_fail(conv_bytes_read == strlen(password), NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
434 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
435 | if (conv_error != NULL) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
436 | purple_debug_error("msim", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
437 | "g_convert password UTF8->UTF16LE failed: %s", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
438 | conv_error->message); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
439 | g_error_free(conv_error); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
440 | return NULL; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
441 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
442 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
443 | /* Compute password hash */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
444 | purple_cipher_digest_region("sha1", (guchar *)password_utf16le, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
445 | conv_bytes_written, sizeof(hash_pw), hash_pw, NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
446 | g_free(password_utf16le); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
447 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
448 | #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
449 | purple_debug_info("msim", "pwhash = "); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
450 | for (i = 0; i < sizeof(hash_pw); i++) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
451 | purple_debug_info("msim", "%.2x ", hash_pw[i]); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
452 | purple_debug_info("msim", "\n"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
453 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
454 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
455 | /* key = sha1(sha1(pw) + nonce2) */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
456 | sha1 = purple_ciphers_find_cipher("sha1"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
457 | key_context = purple_cipher_context_new(sha1, NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
458 | purple_cipher_context_append(key_context, hash_pw, HASH_SIZE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
462 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
463 | #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
464 | purple_debug_info("msim", "key = "); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
465 | for (i = 0; i < sizeof(key); i++) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
466 | purple_debug_info("msim", "%.2x ", key[i]); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
467 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
468 | purple_debug_info("msim", "\n"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
469 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
470 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
471 | rc4 = purple_cipher_context_new_by_name("rc4", NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
472 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
473 | /* Note: 'key' variable is 0x14 bytes (from SHA-1 hash), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
474 | * but only first 0x10 used for the RC4 key. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
475 | purple_cipher_context_set_option(rc4, "key_len", (gpointer)0x10); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
476 | purple_cipher_context_set_key(rc4, key); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
477 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
478 | /* TODO: obtain IPs of network interfaces */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
479 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
480 | /* rc4 encrypt: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
481 | * nonce1+email+IP list */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
482 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
483 | data_len = NONCE_SIZE + strlen(email) + MSIM_LOGIN_IP_LIST_LEN; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
484 | data = g_new0(guchar, data_len); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
485 | memcpy(data, nonce, NONCE_SIZE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
486 | memcpy(data + NONCE_SIZE, email, strlen(email)); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
488 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
489 | data_out = g_new0(guchar, data_len); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
490 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
491 | purple_cipher_context_encrypt(rc4, (const guchar *)data, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
492 | data_len, data_out, &data_out_len); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
501 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
502 | #ifdef MSIM_DEBUG_LOGIN_CHALLENGE |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
503 | purple_debug_info("msim", "response=<%s>\n", data_out); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
504 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
505 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
506 | *response_len = data_out_len; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
509 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
510 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
511 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
513 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
514 | * @param gc Connection. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
516 | * @param message Instant message text to send. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
517 | * @param flags Flags. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
518 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
519 | * @return 1 if successful or postponed, -1 if failed |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
520 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
523 | * This function does that by calling msim_postprocess_outgoing(). |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
524 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
525 | int |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
526 | msim_send_im(PurpleConnection *gc, const gchar *who, const gchar *message, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
527 | PurpleMessageFlags flags) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
528 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
529 | MsimSession *session; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
530 | gchar *message_msim; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
531 | int rc; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
532 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
533 | g_return_val_if_fail(gc != NULL, -1); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
534 | g_return_val_if_fail(who != NULL, -1); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
535 | g_return_val_if_fail(message != NULL, -1); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
536 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
537 | /* 'flags' has many options, not used here. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
538 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
539 | session = (MsimSession *)gc->proto_data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
540 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
541 | g_return_val_if_fail(MSIM_SESSION_VALID(session), -1); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
542 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
543 | message_msim = html_to_msim_markup(session, message); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
544 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
545 | if (msim_send_bm(session, who, message_msim, MSIM_BM_INSTANT)) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
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>
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>
diff
changeset
|
552 | rc = 1; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
553 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
554 | rc = -1; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
555 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
556 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
557 | g_free(message_msim); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
558 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
559 | return rc; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
560 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
561 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
562 | /** Send a buddy message of a given type. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
563 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
564 | * @param session |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
565 | * @param who Username to send message to. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
566 | * @param text Message text to send. Not freed; will be copied. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
567 | * @param type A MSIM_BM_* constant. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
568 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
569 | * @return TRUE if success, FALSE if fail. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
570 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
571 | * Buddy messages ('bm') include instant messages, action messages, status messages, etc. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
572 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
575 | msim_send_bm(MsimSession *session, const gchar *who, const gchar *text, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
576 | int type) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
577 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
578 | gboolean rc; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
579 | MsimMessage *msg; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
580 | const gchar *from_username; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
581 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
582 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
583 | g_return_val_if_fail(who != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
586 | from_username = session->account->username; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
587 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
588 | g_return_val_if_fail(from_username != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
589 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
591 | type, from_username, who, text); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
592 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
595 | "sesskey", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(session->sesskey), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
596 | /* 't' will be inserted here */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
597 | "cv", MSIM_TYPE_INTEGER, GUINT_TO_POINTER(MSIM_CLIENT_VERSION), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
598 | "msg", MSIM_TYPE_STRING, g_strdup(text), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
599 | NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
600 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
601 | rc = msim_postprocess_outgoing(session, msg, who, "t", "cv"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
602 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
603 | msim_msg_free(msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
604 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
605 | return rc; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
606 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
607 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
608 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
610 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
611 | msim_incoming_bm_record_cv(MsimSession *session, MsimMessage *msg) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
612 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
613 | gchar *username, *cv; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
614 | gboolean ret; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
615 | MsimUser *user; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
616 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
617 | username = msim_msg_get_string(msg, "_username"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
618 | cv = msim_msg_get_string(msg, "cv"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
619 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
620 | g_return_val_if_fail(username != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
621 | if (!cv) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
624 | return FALSE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
625 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
626 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
627 | user = msim_find_user(session, username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
628 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
629 | if (user) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
630 | user->client_cv = atol(cv); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
631 | ret = TRUE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
632 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
633 | ret = FALSE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
634 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
635 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
636 | g_free(username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
637 | g_free(cv); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
638 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
639 | return ret; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
640 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
641 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
642 | /** Handle an incoming buddy message. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
643 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
644 | msim_incoming_bm(MsimSession *session, MsimMessage *msg) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
645 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
646 | guint bm; |
|
22349
96ff0e5a1d2e
merge of '16745d78d4ae06c7c49622d121ae53e40a85586e'
Mark Doliner <markdoliner@pidgin.im>
diff
changeset
|
647 | |
|
19505
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
648 | bm = msim_msg_get_integer(msg, "bm"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
649 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
650 | msim_incoming_bm_record_cv(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
651 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
652 | switch (bm) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
653 | case MSIM_BM_STATUS: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
654 | return msim_incoming_status(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
655 | case MSIM_BM_INSTANT: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
656 | return msim_incoming_im(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
657 | case MSIM_BM_ACTION: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
658 | return msim_incoming_action(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
659 | case MSIM_BM_MEDIA: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
660 | return msim_incoming_media(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
661 | case MSIM_BM_UNOFFICIAL_CLIENT: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
662 | return msim_incoming_unofficial_client(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
663 | default: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
664 | /* Not really an IM, but show it for informational |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
665 | * purposes during development. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
666 | return msim_incoming_im(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
667 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
668 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
669 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
670 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
671 | * Handle an incoming instant message. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
672 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
673 | * @param session The session |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
675 | * Should also contain username in _username from preprocessing. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
676 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
677 | * @return TRUE if successful. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
678 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
679 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
680 | msim_incoming_im(MsimSession *session, MsimMessage *msg) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
681 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
684 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
685 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
686 | g_return_val_if_fail(msg != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
687 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
688 | username = msim_msg_get_string(msg, "_username"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
689 | g_return_val_if_fail(username != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
690 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
691 | msg_msim_markup = msim_msg_get_string(msg, "msg"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
692 | g_return_val_if_fail(msg_msim_markup != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
693 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
694 | msg_purple_markup = msim_markup_to_html(session, msg_msim_markup); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
695 | g_free(msg_msim_markup); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
703 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
704 | g_free(username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
705 | g_free(msg_purple_markup); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
706 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
707 | return TRUE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
708 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
709 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
710 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
711 | * Process unrecognized information. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
712 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
713 | * @param session |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
714 | * @param msg An MsimMessage that was unrecognized, or NULL. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
715 | * @param note Information on what was unrecognized, or NULL. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
718 | msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
719 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
720 | /* TODO: Some more context, outwardly equivalent to a backtrace, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
722 | * But not too much information so that a user |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
723 | * posting this dump reveals confidential information. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
724 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
725 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
732 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
736 | if (note) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
737 | purple_debug_info("msim", "(Note: %s)\n", note); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
738 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
739 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
740 | if (msg) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
741 | msim_msg_dump("Unrecognized message dump: %s\n", msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
742 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
743 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
744 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
745 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
746 | * Handle an incoming action message. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
747 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
748 | * @param session |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
749 | * @param msg |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
750 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
751 | * @return TRUE if successful. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
752 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
753 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
754 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
755 | msim_incoming_action(MsimSession *session, MsimMessage *msg) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
756 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
757 | gchar *msg_text, *username; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
758 | gboolean rc; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
759 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
760 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
761 | g_return_val_if_fail(msg != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
762 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
763 | msg_text = msim_msg_get_string(msg, "msg"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
764 | g_return_val_if_fail(msg_text != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
765 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
766 | username = msim_msg_get_string(msg, "_username"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
767 | g_return_val_if_fail(username != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
770 | msg_text, username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
773 | serv_got_typing(session->gc, username, 0, PURPLE_TYPING); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
776 | serv_got_typing_stopped(session->gc, username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
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>
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>
diff
changeset
|
799 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
800 | msim_unrecognized(session, msg, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
801 | "got to msim_incoming_action but unrecognized value for 'msg'"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
802 | rc = FALSE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
803 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
804 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
805 | g_free(msg_text); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
806 | g_free(username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
807 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
808 | return rc; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
809 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
812 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
813 | msim_incoming_media(MsimSession *session, MsimMessage *msg) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
814 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
815 | gchar *username, *text; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
816 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
817 | username = msim_msg_get_string(msg, "_username"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
818 | text = msim_msg_get_string(msg, "msg"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
819 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
820 | g_return_val_if_fail(username != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
821 | g_return_val_if_fail(text != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
822 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
824 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
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>
diff
changeset
|
828 | serv_got_typing(session->gc, username, 0, PURPLE_TYPING); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
829 | serv_got_typing_stopped(session->gc, username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
830 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
831 | g_free(username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
832 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
833 | return TRUE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
834 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
835 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
836 | /* Process an incoming "unofficial client" message. The plugin for |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
837 | * Miranda IM sends this message with the plugin information. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
838 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
839 | msim_incoming_unofficial_client(MsimSession *session, MsimMessage *msg) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
840 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
841 | MsimUser *user; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
842 | gchar *username, *client_info; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
843 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
844 | username = msim_msg_get_string(msg, "_username"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
845 | client_info = msim_msg_get_string(msg, "msg"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
846 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
847 | g_return_val_if_fail(username != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
848 | g_return_val_if_fail(client_info != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
849 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
851 | username, client_info); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
852 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
853 | user = msim_find_user(session, username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
854 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
855 | g_return_val_if_fail(user != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
856 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
857 | if (user->client_info) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
858 | g_free(user->client_info); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
859 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
860 | user->client_info = client_info; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
861 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
862 | g_free(username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
863 | /* Do not free client_info - the MsimUser now owns it. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
864 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
865 | return TRUE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
866 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
867 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
868 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
869 | #ifdef MSIM_SEND_CLIENT_VERSION |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
870 | /** Send our client version to another unofficial client that understands it. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
871 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
872 | msim_send_unofficial_client(MsimSession *session, gchar *username) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
873 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
874 | gchar *our_info; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
875 | gboolean ret; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
876 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
877 | our_info = g_strdup_printf("Libpurple %d.%d.%d - msimprpl %s", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
878 | PURPLE_MAJOR_VERSION, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
879 | PURPLE_MINOR_VERSION, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
880 | PURPLE_MICRO_VERSION, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
881 | MSIM_PRPL_VERSION_STRING); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
882 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
884 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
885 | return ret; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
886 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
887 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
888 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
889 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
890 | * Handle when our user starts or stops typing to another user. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
891 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
892 | * @param gc |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
894 | * @param state PURPLE_TYPING, PURPLE_TYPED, PURPLE_NOT_TYPING |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
895 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
896 | * @return 0 |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
897 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
898 | unsigned int |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
899 | msim_send_typing(PurpleConnection *gc, const gchar *name, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
900 | PurpleTypingState state) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
901 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
902 | const gchar *typing_str; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
903 | MsimSession *session; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
904 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
905 | g_return_val_if_fail(gc != NULL, 0); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
906 | g_return_val_if_fail(name != NULL, 0); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
907 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
908 | session = (MsimSession *)gc->proto_data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
909 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
910 | g_return_val_if_fail(MSIM_SESSION_VALID(session), 0); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
911 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
912 | switch (state) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
913 | case PURPLE_TYPING: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
914 | typing_str = "%typing%"; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
915 | break; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
916 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
917 | case PURPLE_TYPED: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
918 | case PURPLE_NOT_TYPING: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
919 | default: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
920 | typing_str = "%stoptyping%"; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
921 | break; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
922 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
923 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
925 | msim_send_bm(session, name, typing_str, MSIM_BM_ACTION); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
926 | return 0; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
927 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
930 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
931 | /** Callback for msim_get_info(), for when user info is received. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
932 | static void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
933 | msim_get_info_cb(MsimSession *session, MsimMessage *user_info_msg, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
934 | gpointer data) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
935 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
936 | MsimMessage *msg; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
937 | gchar *username; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
938 | PurpleNotifyUserInfo *user_info; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
939 | MsimUser *user; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
940 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
941 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
942 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
944 | orthogonality. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
945 | msg = (MsimMessage *)data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
946 | g_return_if_fail(msg != NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
947 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
948 | username = msim_msg_get_string(msg, "user"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
951 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
952 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
953 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
954 | msim_msg_free(msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
956 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
957 | user = msim_find_user(session, username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
958 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
959 | if (!user) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
970 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
971 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
972 | /* Update user structure with new information */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
973 | msim_store_user_info(session, user_info_msg, user); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
974 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
975 | user_info = purple_notify_user_info_new(); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
976 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
977 | /* Append data from MsimUser to PurpleNotifyUserInfo for display, full */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
978 | msim_append_user_info(session, user_info, user, TRUE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
979 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
980 | purple_notify_userinfo(session->gc, username, user_info, NULL, NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
982 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
983 | purple_notify_user_info_destroy(user_info); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
987 | g_free(user->client_info); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
988 | g_free(user->gender); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
989 | g_free(user->location); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
990 | g_free(user->headline); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
991 | g_free(user->display_name); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
992 | g_free(user->username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
993 | g_free(user->image_url); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
994 | g_free(user); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
997 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
998 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
999 | /** Retrieve a user's profile. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1000 | * @param username Username, user ID, or email address to lookup. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1001 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1002 | void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1003 | msim_get_info(PurpleConnection *gc, const gchar *username) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1004 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1005 | MsimSession *session; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1006 | MsimUser *user; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1007 | guint uid; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1008 | gchar *user_to_lookup; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1009 | MsimMessage *user_msg; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1010 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1011 | g_return_if_fail(gc != NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1012 | g_return_if_fail(username != NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1013 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1014 | session = (MsimSession *)gc->proto_data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1015 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1016 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1017 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1018 | /* Obtain uid of buddy. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1019 | user = msim_find_user(session, username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1020 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
1023 | user_to_lookup = g_strdup_printf("%d", uid); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1024 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1025 | /* Looking up buddy not on blist. Lookup by whatever user entered. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1026 | user_to_lookup = g_strdup(username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1027 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1028 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1030 | * by userid, the userinfo message will only contain the uid (not |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1032 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1033 | user_msg = msim_msg_new( |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1034 | "user", MSIM_TYPE_STRING, g_strdup(username), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1035 | NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1037 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1039 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1040 | g_free(user_to_lookup); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1041 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1042 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1043 | /** Set your status - callback for when user manually sets it. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1044 | void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1045 | msim_set_status(PurpleAccount *account, PurpleStatus *status) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1046 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1049 | MsimSession *session; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1054 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1055 | session = (MsimSession *)account->gc->proto_data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1056 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1057 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1058 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1061 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1062 | switch (purple_status_type_get_primitive(type)) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1063 | case PURPLE_STATUS_AVAILABLE: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1065 | MSIM_STATUS_CODE_ONLINE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1066 | status_code = MSIM_STATUS_CODE_ONLINE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1067 | break; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1068 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1069 | case PURPLE_STATUS_INVISIBLE: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1071 | MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1072 | status_code = MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1073 | break; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1074 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1075 | case PURPLE_STATUS_AWAY: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1077 | MSIM_STATUS_CODE_AWAY); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1078 | status_code = MSIM_STATUS_CODE_AWAY; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1079 | break; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1080 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1081 | default: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1082 | purple_debug_info("msim", "msim_set_status: unknown " |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1083 | "status interpreting as online"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1091 | break; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1092 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
1108 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1109 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1110 | /** Go idle. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1111 | void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1112 | msim_set_idle(PurpleConnection *gc, int time) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1113 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1116 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1117 | g_return_if_fail(gc != NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1118 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1119 | session = (MsimSession *)gc->proto_data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1120 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1121 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1125 | if (time == 0) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1126 | /* Going back from idle. In msim, idle is mutually exclusive |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
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>
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>
diff
changeset
|
1147 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1148 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1149 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1150 | /** Set status using an MSIM_STATUS_CODE_* value. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1151 | * @param status_code An MSIM_STATUS_CODE_* value. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1153 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1154 | static void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1155 | msim_set_status_code(MsimSession *session, guint status_code, gchar *statstring) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1156 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1157 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1158 | g_return_if_fail(statstring != NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1159 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1161 | status_code, statstring); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1162 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1163 | if (!msim_send(session, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1164 | "status", MSIM_TYPE_INTEGER, status_code, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1165 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1166 | "statstring", MSIM_TYPE_STRING, statstring, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1167 | "locstring", MSIM_TYPE_STRING, g_strdup(""), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1168 | NULL)) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1171 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1172 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1173 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1174 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1176 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1177 | * @param session |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1178 | * @param userinfo Response messsage to resolving request. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1179 | * @param data MsimMessage *, the message to attach information to. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1180 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1181 | static void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1182 | msim_incoming_resolved(MsimSession *session, MsimMessage *userinfo, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1183 | gpointer data) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1184 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1187 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1188 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1189 | g_return_if_fail(userinfo != NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
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>
diff
changeset
|
1197 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1198 | msg = (MsimMessage *)data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1199 | g_return_if_fail(msg != NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1200 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1201 | /* TODO: more elegant solution than below. attach whole message? */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1202 | /* Special elements name beginning with '_', we'll use internally within the |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1205 | |
|
19505
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1206 | /* TODO: attach more useful information, like ImageURL */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1207 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1208 | msim_process(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1209 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1213 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1214 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1215 | /* Lookup a username by userid, from buddy list. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1216 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1217 | * @param wanted_uid |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1221 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1222 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1225 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
1230 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1231 | if (!buddies) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1234 | return NULL; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1235 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1238 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1239 | for (cur = buddies; cur != NULL; cur = g_slist_next(cur)) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1240 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1241 | PurpleBuddy *buddy; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1242 | guint uid; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1243 | const gchar *name; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1244 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1245 | /* See finch/gnthistory.c */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1246 | buddy = cur->data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1247 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1248 | uid = purple_blist_node_get_int(&buddy->node, "UserID"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1249 | name = purple_buddy_get_name(buddy); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1250 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1251 | if (uid == wanted_uid) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1255 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1256 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1257 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1258 | g_slist_free(buddies); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1259 | return ret; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1260 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1261 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1263 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1264 | * @param session |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1265 | * @param msg MsimMessage *, freed by caller. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1266 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1267 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1268 | msim_preprocess_incoming(MsimSession *session, MsimMessage *msg) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1269 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1270 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1271 | g_return_val_if_fail(msg != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1272 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1273 | if (msim_msg_get(msg, "bm") && msim_msg_get(msg, "f")) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1274 | guint uid; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1275 | const gchar *username; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1276 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1277 | /* 'f' = userid message is from, in buddy messages */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1278 | uid = msim_msg_get_integer(msg, "f"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1281 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1282 | if (username) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1283 | /* Know username already, use it. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1285 | username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1287 | return msim_process(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1288 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1289 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1290 | gchar *from; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1291 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1292 | /* Send lookup request. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
1295 | from = msim_msg_get_string(msg, "f"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1297 | g_free(from); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1298 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1299 | /* indeterminate */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1300 | return TRUE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1301 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1302 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1303 | /* Nothing to resolve - send directly to processing. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1304 | return msim_process(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1305 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1306 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1307 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1308 | #ifdef MSIM_USE_KEEPALIVE |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1309 | /** Check if the connection is still alive, based on last communication. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1310 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1311 | msim_check_alive(gpointer data) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1312 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1313 | MsimSession *session; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1314 | time_t delta; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1315 | gchar *errmsg; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1316 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1317 | session = (MsimSession *)data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1318 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1319 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1320 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1323 | if (delta >= MSIM_KEEPALIVE_INTERVAL) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1325 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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 | 1329 | PURPLE_CONNECTION_ERROR_NETWORK_ERROR, errmsg); |
|
19505
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1330 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1331 | purple_notify_error(session->gc, NULL, errmsg, NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1332 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1333 | g_free(errmsg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1334 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1335 | return FALSE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1336 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1337 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1338 | return TRUE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1339 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1340 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1341 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1342 | /** Handle mail reply checks. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1343 | static void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1344 | msim_check_inbox_cb(MsimSession *session, MsimMessage *reply, gpointer data) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1347 | guint old_inbox_status; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1348 | guint i, n; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1349 | const gchar *froms[5], *tos[5], *urls[5], *subjects[5]; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1364 | }; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1365 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1372 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1373 | g_return_if_fail(reply != NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1374 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1375 | msim_msg_dump("msim_check_inbox_cb: reply=%s\n", reply); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1381 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1382 | old_inbox_status = session->inbox_status; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1383 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1384 | n = 0; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1387 | const gchar *key; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1388 | guint bit; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
1394 | /* Notify only on when _changes_ from no mail -> has mail |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1395 | * (edge triggered) */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1396 | if (!(session->inbox_status & bit)) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1398 | key ? key : "(NULL)", n); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1401 | froms[n] = _("MySpace"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1402 | tos[n] = session->username; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1403 | /* TODO: append token, web challenge, so automatically logs in. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
1407 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1408 | ++n; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1409 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1410 | purple_debug_info("msim", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1411 | "msim_check_inbox_cb: already notified of %s\n", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1412 | key ? key : "(NULL)"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1413 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1414 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1415 | session->inbox_status |= bit; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1416 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1417 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1418 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1419 | if (n) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1420 | purple_debug_info("msim", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1421 | "msim_check_inbox_cb: notifying of %d\n", n); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1422 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1423 | /* TODO: free strings with callback _if_ change to dynamic (w/ token) */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1424 | purple_notify_emails(session->gc, /* handle */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1425 | n, /* count */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1426 | TRUE, /* detailed */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1427 | subjects, froms, tos, urls, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1428 | NULL, /* PurpleNotifyCloseCallback cb */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1429 | NULL); /* gpointer user_data */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1430 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1431 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1434 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1435 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1436 | /* Send request to check if there is new mail. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1437 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1438 | msim_check_inbox(gpointer data) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1439 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1440 | MsimSession *session; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1441 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1442 | session = (MsimSession *)data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1449 | purple_debug_info("msim", "msim_check_inbox: checking mail\n"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1450 | g_return_val_if_fail(msim_send(session, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1451 | "persist", MSIM_TYPE_INTEGER, 1, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1452 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1453 | "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_GET, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1454 | "dsn", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_DSN, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1455 | "lid", MSIM_TYPE_INTEGER, MG_CHECK_MAIL_LID, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1456 | "uid", MSIM_TYPE_INTEGER, session->userid, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1457 | "rid", MSIM_TYPE_INTEGER, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1458 | msim_new_reply_callback(session, msim_check_inbox_cb, NULL), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1459 | "body", MSIM_TYPE_STRING, g_strdup(""), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1460 | NULL), TRUE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1461 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1462 | /* Always return true, so that we keep checking for mail. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1463 | return TRUE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1464 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
1556 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1559 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1560 | session->sesskey = msim_msg_get_integer(msg, "sesskey"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1561 | purple_debug_info("msim", "SESSKEY=<%d>\n", session->sesskey); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1562 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1564 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1565 | /* Comes with: proof,profileid,userid,uniquenick -- all same values |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1567 | session->userid = msim_msg_get_integer(msg, "userid"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1572 | /* Not sure what profileid is used for. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1573 | if (msim_msg_get_integer(msg, "profileid") != session->userid) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1574 | msim_unrecognized(session, msg, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1575 | "Profile ID didn't match user ID, don't know why"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1576 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1577 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1579 | * which is weird, but happens because you login with your email |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1580 | * address and not username. Will be freed in msim_session_destroy(). */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1581 | session->username = msim_msg_get_string(msg, "uniquenick"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
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>
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>
diff
changeset
|
1619 | body = msim_msg_new( |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1620 | "UserID", MSIM_TYPE_INTEGER, session->userid, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1621 | NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1622 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1623 | /* Request IM info about ourself. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1624 | msim_send(session, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1625 | "persist", MSIM_TYPE_STRING, g_strdup("persist"), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1626 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1627 | "dsn", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_DSN, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1628 | "uid", MSIM_TYPE_INTEGER, session->userid, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1629 | "lid", MSIM_TYPE_INTEGER, MG_OWN_MYSPACE_INFO_LID, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1630 | "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1631 | "body", MSIM_TYPE_DICTIONARY, body, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1632 | NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1633 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1634 | /* Request MySpace info about ourself. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1635 | msim_send(session, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1636 | "persist", MSIM_TYPE_STRING, g_strdup("persist"), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1637 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1638 | "dsn", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_DSN, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1639 | "uid", MSIM_TYPE_INTEGER, session->userid, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1640 | "lid", MSIM_TYPE_INTEGER, MG_OWN_IM_INFO_LID, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1641 | "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1642 | "body", MSIM_TYPE_STRING, g_strdup(""), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1643 | NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1644 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1645 | /* TODO: set options (persist cmd=514,dsn=1,lid=10) */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1646 | /* TODO: set blocklist */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1647 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1648 | /* Notify servers of our current status. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1650 | msim_set_status(session->account, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1651 | purple_account_get_active_status(session->account)); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1652 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1653 | /* TODO: setinfo */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1654 | /* |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1655 | body = msim_msg_new( |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1656 | "TotalFriends", MSIM_TYPE_INTEGER, 666, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1657 | NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1658 | msim_send(session, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1659 | "setinfo", MSIM_TYPE_BOOLEAN, TRUE, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1660 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1661 | "info", MSIM_TYPE_DICTIONARY, body, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1662 | NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1663 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1664 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1665 | /* Disable due to problems with timeouts. TODO: fix. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1666 | #ifdef MSIM_USE_KEEPALIVE |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1667 | purple_timeout_add(MSIM_KEEPALIVE_INTERVAL_CHECK, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1668 | (GSourceFunc)msim_check_alive, session); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1669 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1679 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1680 | return TRUE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1681 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1682 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1683 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1684 | * Process a message. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1685 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1686 | * @param session |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1688 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1689 | * @return TRUE if successful. FALSE if processing failed. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1690 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1691 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1692 | msim_process(MsimSession *session, MsimMessage *msg) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1693 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1694 | g_return_val_if_fail(session != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1695 | g_return_val_if_fail(msg != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1696 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1697 | #ifdef MSIM_DEBUG_MSG |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1698 | msim_msg_dump("ready to process: %s\n", msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1699 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1700 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1701 | if (msim_msg_get_integer(msg, "lc") == 1) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1702 | return msim_login_challenge(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1712 | } else if (msim_msg_get(msg, "bm")) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1713 | return msim_incoming_bm(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1714 | } else if (msim_msg_get(msg, "rid")) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1715 | return msim_process_reply(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1716 | } else if (msim_msg_get(msg, "error")) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1717 | return msim_error(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1718 | } else if (msim_msg_get(msg, "ka")) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1719 | return TRUE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1720 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1721 | msim_unrecognized(session, msg, "in msim_process"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1722 | return FALSE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1723 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1724 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1725 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1726 | /** Process the initial server information from the server. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1727 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1728 | msim_process_server_info(MsimSession *session, MsimMessage *msg) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
1735 | /* Example body: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1736 | AdUnitRefreshInterval=10. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1737 | AlertPollInterval=360. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1738 | AllowChatRoomEmoticonSharing=False. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1739 | ChatRoomUserIDs=78744676;163733130;1300326231;123521495;142663391. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1740 | CurClientVersion=673. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1741 | EnableIMBrowse=True. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1742 | EnableIMStuffAvatars=False. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1743 | EnableIMStuffZaps=False. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1744 | MaxAddAllFriends=100. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1745 | MaxContacts=1000. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1746 | MinClientVersion=594. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1747 | MySpaceIM_ENGLISH=78744676. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1748 | MySpaceNowTimer=720. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1749 | PersistenceDataTimeout=900. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1750 | UseWebChallenge=1. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1751 | WebTicketGoHome=False |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1752 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1753 | Anything useful? TODO: use what is useful, and use it. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1754 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1758 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1759 | session->server_info = body; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1760 | /* session->server_info freed in msim_session_destroy */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1761 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1762 | return TRUE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1763 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1764 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1765 | /** Process a web challenge, used to login to the web site. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1766 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1767 | msim_web_challenge(MsimSession *session, MsimMessage *msg) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1770 | return FALSE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1771 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1772 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1773 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1774 | * Process a persistance message reply from the server. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1775 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1776 | * @param session |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1777 | * @param msg Message reply from server. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1778 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1779 | * @return TRUE if successful. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1780 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1781 | * msim_lookup_user sets callback for here |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1782 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1783 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1784 | msim_process_reply(MsimSession *session, MsimMessage *msg) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1785 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1786 | MSIM_USER_LOOKUP_CB cb; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1787 | gpointer data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1788 | guint rid, cmd, dsn, lid; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1789 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1790 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1791 | g_return_val_if_fail(msg != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1792 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1793 | msim_store_user_info(session, msg, NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1794 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1795 | rid = msim_msg_get_integer(msg, "rid"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1796 | cmd = msim_msg_get_integer(msg, "cmd"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1797 | dsn = msim_msg_get_integer(msg, "dsn"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1798 | lid = msim_msg_get_integer(msg, "lid"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1799 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1800 | /* Unsolicited messages */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1801 | if (cmd == (MSIM_CMD_BIT_REPLY | MSIM_CMD_GET)) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1802 | if (dsn == MG_SERVER_INFO_DSN && lid == MG_SERVER_INFO_LID) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1803 | return msim_process_server_info(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1805 | return msim_web_challenge(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1806 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1807 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1808 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1809 | /* If a callback is registered for this userid lookup, call it. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
1812 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
1817 | cb(session, msim_msg_clone(msg), data); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
1820 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1823 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1824 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1825 | return TRUE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1826 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1827 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1828 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1829 | * Handle an error from the server. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1830 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1831 | * @param session |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1832 | * @param msg The message. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1833 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1834 | * @return TRUE if successfully reported error. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1835 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1836 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1837 | msim_error(MsimSession *session, MsimMessage *msg) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1838 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1839 | gchar *errmsg, *full_errmsg; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1840 | guint err; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1841 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1842 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1843 | g_return_val_if_fail(msg != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1844 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1845 | err = msim_msg_get_integer(msg, "err"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1846 | errmsg = msim_msg_get_string(msg, "errmsg"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1847 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1848 | full_errmsg = g_strdup_printf(_("Protocol error, code %d: %s"), err, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1849 | errmsg ? errmsg : "no 'errmsg' given"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1850 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1851 | g_free(errmsg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1852 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1853 | purple_debug_info("msim", "msim_error (sesskey=%d): %s\n", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1854 | session->sesskey, full_errmsg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1855 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1856 | /* Destroy session if fatal. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1857 | if (msim_msg_get(msg, "fatal")) { |
| 21279 | 1858 | PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR; |
|
19505
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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 | 1863 | reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED; |
|
20853
2637f895b850
propagate from branch 'im.pidgin.pidgin' (head 32d28b465fe37954f20265414e216024313570ad)
Will Thompson <resiak@pidgin.im>
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>
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>
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 | 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>
diff
changeset
|
1894 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1898 | return TRUE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1899 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1900 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1901 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1902 | * Process incoming status messages. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1903 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1904 | * @param session |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1905 | * @param msg Status update message. Caller frees. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1906 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1907 | * @return TRUE if successful. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1908 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1909 | static gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1910 | msim_incoming_status(MsimSession *session, MsimMessage *msg) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1911 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1912 | PurpleBuddyList *blist; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1913 | MsimUser *user; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1916 | gint status_code, purple_status_code; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1919 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1920 | g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1921 | g_return_val_if_fail(msg != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1922 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1923 | msim_msg_dump("msim_status msg=%s\n", msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1924 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1925 | /* Helpfully looked up by msim_incoming_resolve() for us. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1926 | username = msim_msg_get_string(msg, "_username"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1927 | g_return_val_if_fail(username != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1928 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1929 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1930 | gchar *ss; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1931 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1932 | ss = msim_msg_get_string(msg, "msg"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1933 | purple_debug_info("msim", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1934 | "msim_status: updating status for <%s> to <%s>\n", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1935 | username, ss ? ss : "(NULL)"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1936 | g_free(ss); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1937 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1938 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1939 | /* Example fields: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1940 | * |s|0|ss|Offline |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1941 | * |s|1|ss|:-)|ls||ip|0|p|0 |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1942 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1943 | list = msim_msg_get_list(msg, "msg"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
1948 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1949 | blist = purple_get_blist(); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1953 | user = msim_find_user(session, username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1954 | if (!user) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1955 | PurpleBuddy *buddy; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1956 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1957 | purple_debug_info("msim", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1958 | "msim_status: making new buddy for %s\n", username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1959 | buddy = purple_buddy_new(session->account, username, NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1960 | purple_blist_add_buddy(buddy, NULL, NULL, NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1961 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1962 | user = msim_get_user_from_buddy(buddy); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
1966 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1967 | msim_store_user_info(session, msg, NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1968 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1969 | purple_debug_info("msim", "msim_status: found buddy %s\n", username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1970 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
1988 | /* Set user status */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1989 | switch (status_code) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1990 | case MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1991 | purple_status_code = PURPLE_STATUS_OFFLINE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1992 | break; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1993 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1994 | case MSIM_STATUS_CODE_ONLINE: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1995 | purple_status_code = PURPLE_STATUS_AVAILABLE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1996 | break; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1997 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1998 | case MSIM_STATUS_CODE_AWAY: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
1999 | purple_status_code = PURPLE_STATUS_AWAY; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2000 | break; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2001 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2005 | break; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2006 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
2017 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2018 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2020 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2021 | if (status_code == MSIM_STATUS_CODE_IDLE) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2022 | purple_debug_info("msim", "msim_status: got idle: %s\n", username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2023 | purple_prpl_got_user_idle(session->account, username, TRUE, time(NULL)); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2024 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2025 | /* All other statuses indicate going back to non-idle. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2026 | purple_prpl_got_user_idle(session->account, username, FALSE, time(NULL)); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2027 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2028 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2029 | #ifdef MSIM_SEND_CLIENT_VERSION |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2030 | if (status_code == MSIM_STATUS_CODE_ONLINE) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2032 | msim_send_unofficial_client(session, username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2033 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2034 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2044 | g_free(username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2045 | msim_msg_list_free(list); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2046 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2047 | return TRUE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2048 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2049 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2050 | /** Add a buddy to user's buddy list. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2051 | void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2052 | msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2053 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2054 | MsimSession *session; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2057 | MsimMessage *body; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2058 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2059 | session = (MsimSession *)gc->proto_data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2061 | buddy->name, (group && group->name) ? group->name : "(no group)"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2062 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2063 | msg = msim_msg_new( |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2064 | "addbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2065 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2066 | /* "newprofileid" will be inserted here with uid. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2067 | "reason", MSIM_TYPE_STRING, g_strdup(""), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2068 | NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2069 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2070 | if (!msim_postprocess_outgoing(session, msg, buddy->name, "newprofileid", "reason")) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2072 | msim_msg_free(msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2073 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2074 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2075 | msim_msg_free(msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2076 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2078 | * buddy list since Purple adds it locally. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2079 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2080 | body = msim_msg_new( |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2081 | "ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2082 | "GroupName", MSIM_TYPE_STRING, g_strdup(group->name), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2083 | "Position", MSIM_TYPE_INTEGER, 1000, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2084 | "Visibility", MSIM_TYPE_INTEGER, 1, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2085 | "NickName", MSIM_TYPE_STRING, g_strdup(""), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2086 | "NameSelect", MSIM_TYPE_INTEGER, 0, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2087 | NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2088 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2089 | /* TODO: Update blocklist. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2090 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2091 | msg_persist = msim_msg_new( |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2092 | "persist", MSIM_TYPE_INTEGER, 1, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2093 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2094 | "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_PUT, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2097 | "lid", MSIM_TYPE_INTEGER, MC_CONTACT_INFO_LID, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2098 | /* TODO: Use msim_new_reply_callback to get rid. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2099 | "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2100 | "body", MSIM_TYPE_DICTIONARY, body, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2101 | NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2102 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2103 | if (!msim_postprocess_outgoing(session, msg_persist, buddy->name, "body", NULL)) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2104 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2106 | msim_msg_free(msg_persist); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2107 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2108 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2109 | msim_msg_free(msg_persist); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2110 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2111 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2112 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2113 | /** Perform actual postprocessing on a message, adding userid as specified. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2114 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2115 | * @param msg The message to postprocess. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2117 | * @param uid_field_name Name of field to add uid to. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2118 | * @param uid The userid to insert. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2119 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
2122 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2124 | * field named by uid_before, as an integer, with the userid. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2125 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2127 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2128 | static MsimMessage * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2129 | msim_do_postprocessing(MsimMessage *msg, const gchar *uid_before, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2130 | const gchar *uid_field_name, guint uid) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2133 | msim_msg_dump("msim_do_postprocessing msg: %s\n", msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2134 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2137 | gchar *fmt_string; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2138 | gchar *uid_str, *new_str; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2139 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2140 | /* Get the packed element, flattening it. This allows <uid> to be |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2141 | * replaced within nested data structures, since the replacement is done |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2142 | * on the linear, packed data, not on a complicated data structure. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2143 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
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>
diff
changeset
|
2147 | * just by a string replacement. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2148 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2149 | fmt_string = msim_msg_pack_element_data(elem); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2150 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2153 | g_free(uid_str); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2154 | g_free(fmt_string); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2155 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2156 | /* Free the old element data */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2157 | msim_msg_free_element_data(elem->data); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2158 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2159 | /* Replace it with our new data */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2160 | elem->data = new_str; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2161 | elem->type = MSIM_TYPE_RAW; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2162 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2163 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2164 | /* Otherwise, insert new field into outgoing message. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2166 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2167 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2169 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2170 | return msg; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2171 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2172 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2174 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2175 | * @param session |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2176 | * @param userinfo The user information reply message, containing the user ID |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2177 | * @param data The message to postprocess and send. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2178 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2179 | * The data message should contain these fields: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2180 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
2183 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2184 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2185 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2186 | static void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2187 | msim_postprocess_outgoing_cb(MsimSession *session, MsimMessage *userinfo, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2188 | gpointer data) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2193 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2194 | msg = (MsimMessage *)data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2195 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2197 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
2223 | uid_field_name = msim_msg_get_string(msg, "_uid_field_name"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2224 | uid_before = msim_msg_get_string(msg, "_uid_before"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2227 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2228 | /* Send */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2229 | if (!msim_msg_send(session, msg)) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2231 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2232 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2233 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2234 | /* Free field names AFTER sending message, because MsimMessage does NOT copy |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2236 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2237 | g_free(uid_field_name); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2243 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2244 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2245 | /** Postprocess and send a message. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2246 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2247 | * @param session |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2248 | * @param msg Message to postprocess. Will NOT be freed. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
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>
diff
changeset
|
2252 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2253 | * @return TRUE if successful. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2254 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2255 | gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2256 | msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2257 | const gchar *username, const gchar *uid_field_name, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2258 | const gchar *uid_before) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2259 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2260 | PurpleBuddy *buddy; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2261 | guint uid; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2262 | gboolean rc; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2263 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2264 | g_return_val_if_fail(msg != NULL, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2265 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2266 | /* Store information for msim_postprocess_outgoing_cb(). */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2267 | msim_msg_dump("msim_postprocess_outgoing: msg before=%s\n", msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
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>
diff
changeset
|
2271 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2273 | if (msim_is_userid(username)) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2274 | uid = atol(username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2275 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2276 | /* Next, see if on buddy list and know uid. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2277 | buddy = purple_find_buddy(session->account, username); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2278 | if (buddy) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2279 | uid = purple_blist_node_get_int(&buddy->node, "UserID"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2280 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2281 | uid = 0; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2282 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
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>
diff
changeset
|
2287 | username ? username : "(NULL)"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2289 | /* TODO: where is cloned message freed? Should be in _cb. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2291 | return TRUE; /* not sure of status yet - haven't sent! */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2292 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2293 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2294 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2295 | /* Already have uid, postprocess and send msg immediately. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2297 | username ? username : "(NULL)", uid); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2298 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2299 | msg = msim_do_postprocessing(msg, uid_before, uid_field_name, uid); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2300 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2302 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2303 | rc = msim_msg_send(session, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2308 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2309 | return rc; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2310 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2311 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2312 | /** Remove a buddy from the user's buddy list. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2313 | void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2314 | msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2315 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2316 | MsimSession *session; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2317 | MsimMessage *delbuddy_msg; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2318 | MsimMessage *persist_msg; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2319 | MsimMessage *blocklist_msg; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2320 | GList *blocklist_updates; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2321 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2322 | session = (MsimSession *)gc->proto_data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2323 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2324 | delbuddy_msg = msim_msg_new( |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2325 | "delbuddy", MSIM_TYPE_BOOLEAN, TRUE, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2326 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2327 | /* 'delprofileid' with uid will be inserted here. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2328 | NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2329 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2330 | if (!msim_postprocess_outgoing(session, delbuddy_msg, buddy->name, "delprofileid", NULL)) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2332 | msim_msg_free(delbuddy_msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2333 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2334 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2335 | msim_msg_free(delbuddy_msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2336 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2337 | persist_msg = msim_msg_new( |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2338 | "persist", MSIM_TYPE_INTEGER, 1, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2339 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2340 | "cmd", MSIM_TYPE_INTEGER, MSIM_CMD_BIT_ACTION | MSIM_CMD_DELETE, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2341 | "dsn", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_DSN, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2342 | "lid", MSIM_TYPE_INTEGER, MD_DELETE_BUDDY_LID, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2343 | "uid", MSIM_TYPE_INTEGER, session->userid, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2344 | "rid", MSIM_TYPE_INTEGER, session->next_rid++, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2345 | /* <uid> will be replaced by postprocessing */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2346 | "body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"), |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2347 | NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2348 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2349 | if (!msim_postprocess_outgoing(session, persist_msg, buddy->name, "body", NULL)) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2351 | msim_msg_free(persist_msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2352 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2353 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2354 | msim_msg_free(persist_msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2355 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2356 | blocklist_updates = NULL; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2357 | blocklist_updates = g_list_prepend(blocklist_updates, "a-"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2358 | blocklist_updates = g_list_prepend(blocklist_updates, "<uid>"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2359 | blocklist_updates = g_list_prepend(blocklist_updates, "b-"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2360 | blocklist_updates = g_list_prepend(blocklist_updates, "<uid>"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2361 | blocklist_updates = g_list_reverse(blocklist_updates); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2362 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2363 | blocklist_msg = msim_msg_new( |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2364 | "blocklist", MSIM_TYPE_BOOLEAN, TRUE, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2365 | "sesskey", MSIM_TYPE_INTEGER, session->sesskey, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2368 | "idlist", MSIM_TYPE_LIST, blocklist_updates, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2369 | NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2370 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2371 | if (!msim_postprocess_outgoing(session, blocklist_msg, buddy->name, "idlist", NULL)) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2373 | msim_msg_free(blocklist_msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2374 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2375 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2376 | msim_msg_free(blocklist_msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2377 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2445 | /** Return whether the buddy can be messaged while offline. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2446 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2448 | * messages. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2449 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2450 | gboolean |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2451 | msim_offline_message(const PurpleBuddy *buddy) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2452 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2453 | return TRUE; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2454 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2455 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2456 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2457 | * Callback when input available. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2458 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2459 | * @param gc_uncasted A PurpleConnection pointer. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2460 | * @param source File descriptor. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2461 | * @param cond PURPLE_INPUT_READ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2462 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2463 | * Reads the input, and calls msim_preprocess_incoming() to handle it. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2464 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2465 | static void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2466 | msim_input_cb(gpointer gc_uncasted, gint source, PurpleInputCondition cond) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2467 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2468 | PurpleConnection *gc; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2469 | PurpleAccount *account; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2470 | MsimSession *session; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2471 | gchar *end; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2472 | int n; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2473 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2474 | g_return_if_fail(gc_uncasted != NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2476 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2477 | gc = (PurpleConnection *)(gc_uncasted); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2478 | account = purple_connection_get_account(gc); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2479 | session = gc->proto_data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2480 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2481 | /* libpurple/eventloop.h only defines these two */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2482 | if (cond != PURPLE_INPUT_READ && cond != PURPLE_INPUT_WRITE) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2483 | purple_debug_info("msim_input_cb", "unknown condition=%d\n", cond); |
| 21279 | 2484 | purple_connection_error_reason (gc, |
| 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>
diff
changeset
|
2487 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2488 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2489 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2490 | g_return_if_fail(cond == PURPLE_INPUT_READ); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2491 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2494 | session->last_comm = time(NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2504 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2505 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2510 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2512 | * the file descriptor, but it sometimes differs from the 'source' parameter. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2517 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2518 | if (n < 0 && errno == EAGAIN) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2519 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2520 | } else if (n < 0) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2521 | purple_debug_error("msim", "msim_input_cb: read error, ret=%d, " |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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 | 2524 | purple_connection_error_reason (gc, |
| 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>
diff
changeset
|
2527 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2528 | } else if (n == 0) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2529 | purple_debug_info("msim", "msim_input_cb: server disconnected\n"); |
| 21279 | 2530 | purple_connection_error_reason (gc, |
| 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>
diff
changeset
|
2533 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2534 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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 | 2539 | purple_connection_error_reason (gc, |
| 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>
diff
changeset
|
2543 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2544 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2545 | /* Null terminate */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2546 | purple_debug_info("msim", "msim_input_cb: going to null terminate " |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2547 | "at n=%d\n", n); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2548 | session->rxbuf[session->rxoff + n] = 0; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2549 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2550 | #ifdef MSIM_CHECK_EMBEDDED_NULLS |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2552 | if (strlen(session->rxbuf + session->rxoff) != n) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2553 | /* Occurs after login, but it is not a null byte. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2555 | "--null byte encountered?\n", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2556 | strlen(session->rxbuf + session->rxoff), n); |
| 21279 | 2557 | /*purple_connection_error_reason (gc, |
| 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>
diff
changeset
|
2560 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2561 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2562 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2563 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2564 | session->rxoff += n; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2565 | purple_debug_info("msim", "msim_input_cb: read=%d\n", n); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2566 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2567 | #ifdef MSIM_DEBUG_RXBUF |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2568 | purple_debug_info("msim", "buf=<%s>\n", session->rxbuf); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2569 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2570 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2571 | /* Look for \\final\\ end markers. If found, process message. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2572 | while((end = strstr(session->rxbuf, MSIM_FINAL_STRING))) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2573 | MsimMessage *msg; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2574 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2575 | #ifdef MSIM_DEBUG_RXBUF |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2576 | purple_debug_info("msim", "in loop: buf=<%s>\n", session->rxbuf); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2577 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2578 | *end = 0; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2579 | msg = msim_parse(g_strdup(session->rxbuf)); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2580 | if (!msg) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2581 | purple_debug_info("msim", "msim_input_cb: couldn't parse rxbuf\n"); |
| 21279 | 2582 | purple_connection_error_reason (gc, |
| 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>
diff
changeset
|
2586 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2587 | /* Process message and then free it (processing function should |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2588 | * clone message if it wants to keep it afterwards.) */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2589 | if (!msim_preprocess_incoming(session, msg)) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2591 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2592 | msim_msg_free(msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2593 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2594 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2595 | /* Move remaining part of buffer to beginning. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2596 | session->rxoff -= strlen(session->rxbuf) + strlen(MSIM_FINAL_STRING); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
2603 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2604 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2605 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2607 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2608 | * @param cb The callback, an MSIM_USER_LOOKUP_CB. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2610 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2612 | * Put the rid in your request, 'rid' field. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2613 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2614 | * TODO: Make more generic and more specific: |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2616 | * 2) data - make it an MsimMessage? |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2619 | msim_new_reply_callback(MsimSession *session, MSIM_USER_LOOKUP_CB cb, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2620 | gpointer data) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2621 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2622 | guint rid; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2623 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2624 | g_return_val_if_fail(MSIM_SESSION_VALID(session), -1); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2625 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2626 | rid = session->next_rid++; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2627 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
2630 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2631 | return rid; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2632 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2633 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2634 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2635 | * Callback when connected. Sets up input handlers. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2636 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2637 | * @param data A PurpleConnection pointer. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2638 | * @param source File descriptor. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2639 | * @param error_message |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2640 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2641 | static void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2642 | msim_connect_cb(gpointer data, gint source, const gchar *error_message) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2643 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2644 | PurpleConnection *gc; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2645 | MsimSession *session; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2646 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2647 | g_return_if_fail(data != NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2648 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2649 | gc = (PurpleConnection *)data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2650 | session = (MsimSession *)gc->proto_data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2651 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2652 | if (source < 0) { |
| 21279 | 2653 | purple_connection_error_reason (gc, |
| 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>
diff
changeset
|
2656 | error_message ? error_message : "no message given", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2657 | source)); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2658 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2659 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2660 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2661 | session->fd = source; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2662 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2664 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2667 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2668 | * Close the connection. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2669 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2670 | * @param gc The connection. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2671 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2672 | void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2673 | msim_close(PurpleConnection *gc) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2674 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2675 | MsimSession *session; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2676 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2677 | if (gc == NULL) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2678 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2679 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2680 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2681 | session = (MsimSession *)gc->proto_data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2682 | if (session == NULL) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2683 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2684 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2685 | gc->proto_data = NULL; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2686 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2687 | if (!MSIM_SESSION_VALID(session)) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2688 | return; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2689 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2690 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2691 | if (session->gc->inpa) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2692 | purple_input_remove(session->gc->inpa); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2693 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2694 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2695 | msim_session_destroy(session); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2696 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2697 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2698 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2699 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2700 | * Obtain the status text for a buddy. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2701 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2702 | * @param buddy The buddy to obtain status text for. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2703 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2704 | * @return Status text, or NULL if error. Caller g_free()'s. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2705 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2706 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2707 | char * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2708 | msim_status_text(PurpleBuddy *buddy) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2709 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2710 | MsimSession *session; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2711 | MsimUser *user; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2712 | const gchar *display_name, *headline; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2713 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2714 | g_return_val_if_fail(buddy != NULL, NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2715 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2716 | user = msim_get_user_from_buddy(buddy); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2717 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2718 | session = (MsimSession *)buddy->account->gc->proto_data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2719 | g_return_val_if_fail(MSIM_SESSION_VALID(session), NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2720 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2721 | display_name = headline = NULL; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2722 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
2729 | display_name = user->display_name; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2730 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2731 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2732 | /* Return appropriate combination of display name and/or headline, or neither. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2733 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2734 | if (display_name && headline) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2735 | return g_strconcat(display_name, " ", headline, NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2736 | } else if (display_name) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2737 | return g_strdup(display_name); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2738 | } else if (headline) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2739 | return g_strdup(headline); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2740 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2741 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2742 | return NULL; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2743 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2744 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2745 | /** |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2746 | * Obtain the tooltip text for a buddy. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2747 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2748 | * @param buddy Buddy to obtain tooltip text on. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2749 | * @param user_info Variable modified to have the tooltip text. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2750 | * @param full TRUE if should obtain full tooltip text. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2751 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2752 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2753 | void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2754 | msim_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2755 | gboolean full) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2756 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2757 | MsimUser *user; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2758 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2759 | g_return_if_fail(buddy != NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2760 | g_return_if_fail(user_info != NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2761 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2762 | user = msim_get_user_from_buddy(buddy); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2763 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2764 | if (PURPLE_BUDDY_IS_ONLINE(buddy)) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2765 | MsimSession *session; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2766 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2767 | session = (MsimSession *)buddy->account->gc->proto_data; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2768 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2769 | g_return_if_fail(MSIM_SESSION_VALID(session)); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2770 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2771 | /* TODO: if (full), do something different? */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2772 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2773 | /* TODO: request information? have to figure out how to do |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2774 | * the asynchronous lookup like oscar does (tooltip shows |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2775 | * 'retrieving...' if not yet available, then changes when it is). |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2776 | * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2777 | * Right now, only show what we have on hand. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2778 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2779 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2780 | /* Show abbreviated user info. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2781 | msim_append_user_info(session, user_info, user, FALSE); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2782 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
2783 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
3029 | /** Actions menu for account. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3030 | GList * |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3031 | msim_actions(PurplePlugin *plugin, gpointer context) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3032 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3033 | PurpleConnection *gc; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
3036 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3037 | gc = (PurpleConnection *)context; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3038 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3039 | menu = NULL; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3040 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3041 | #if 0 |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3042 | /* TODO: find out how */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3043 | act = purple_plugin_action_new(_("Find people..."), msim_); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3044 | menu = g_list_append(menu, act); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3045 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3046 | act = purple_plugin_action_new(_("Change IM name..."), NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3047 | menu = g_list_append(menu, act); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3048 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3049 | |
| 22077 | 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>
diff
changeset
|
3053 | return menu; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3054 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3055 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3056 | /** Callbacks called by Purple, to access this plugin. */ |
| 20319 | 3057 | static PurplePluginProtocolInfo prpl_info = { |
|
19505
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3058 | /* options */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3059 | OPT_PROTO_USE_POINTSIZE /* specify font size in sane point size */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3060 | | OPT_PROTO_MAIL_CHECK, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3061 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3062 | /* | OPT_PROTO_IM_IMAGE - TODO: direct images. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3063 | NULL, /* user_splits */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3064 | NULL, /* protocol_options */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3065 | NO_BUDDY_ICONS, /* icon_spec - TODO: eventually should add this */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3066 | msim_list_icon, /* list_icon */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3067 | NULL, /* list_emblems */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3068 | msim_status_text, /* status_text */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3069 | msim_tooltip_text, /* tooltip_text */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3070 | msim_status_types, /* status_types */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3071 | msim_blist_node_menu, /* blist_node_menu */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3072 | NULL, /* chat_info */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3073 | NULL, /* chat_info_defaults */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3074 | msim_login, /* login */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3075 | msim_close, /* close */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3076 | msim_send_im, /* send_im */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3077 | NULL, /* set_info */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3078 | msim_send_typing, /* send_typing */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3079 | msim_get_info, /* get_info */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3080 | msim_set_status, /* set_status */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3081 | msim_set_idle, /* set_idle */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3082 | NULL, /* change_passwd */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3083 | msim_add_buddy, /* add_buddy */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3084 | NULL, /* add_buddies */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3085 | msim_remove_buddy, /* remove_buddy */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3086 | NULL, /* remove_buddies */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3087 | NULL, /* add_permit */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3088 | NULL, /* add_deny */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3089 | NULL, /* rem_permit */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3090 | NULL, /* rem_deny */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3091 | NULL, /* set_permit_deny */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3092 | NULL, /* join_chat */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3093 | NULL, /* reject chat invite */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3094 | NULL, /* get_chat_name */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3095 | NULL, /* chat_invite */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3096 | NULL, /* chat_leave */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3097 | NULL, /* chat_whisper */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3098 | NULL, /* chat_send */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3099 | NULL, /* keepalive */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3100 | NULL, /* register_user */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3101 | NULL, /* get_cb_info */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3102 | NULL, /* get_cb_away */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3103 | NULL, /* alias_buddy */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3104 | NULL, /* group_buddy */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3105 | NULL, /* rename_group */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3106 | NULL, /* buddy_free */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
3109 | NULL, /* set_buddy_icon */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3110 | NULL, /* remove_group */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3111 | NULL, /* get_cb_real_name */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3112 | NULL, /* set_chat_topic */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3113 | NULL, /* find_blist_chat */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3114 | NULL, /* roomlist_get_list */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3115 | NULL, /* roomlist_cancel */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3116 | NULL, /* roomlist_expand_category */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3117 | NULL, /* can_receive_file */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3118 | NULL, /* send_file */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
3130 | }; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3131 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3132 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3133 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
3136 | PURPLE_PLUGIN_MAGIC, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3137 | PURPLE_MAJOR_VERSION, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3138 | PURPLE_MINOR_VERSION, |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3139 | PURPLE_PLUGIN_PROTOCOL, /**< type */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3140 | NULL, /**< ui_requirement */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3141 | 0, /**< flags */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3142 | NULL, /**< dependencies */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3143 | PURPLE_PRIORITY_DEFAULT, /**< priority */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3144 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3145 | "prpl-myspace", /**< id */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3146 | "MySpaceIM", /**< name */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3147 | MSIM_PRPL_VERSION_STRING, /**< version */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3148 | /** summary */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3149 | "MySpaceIM Protocol Plugin", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3150 | /** description */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3151 | "MySpaceIM Protocol Plugin", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3152 | "Jeff Connelly <jeff2@soc.pidgin.im>", /**< author */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3153 | "http://developer.pidgin.im/wiki/MySpaceIM/", /**< homepage */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3154 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3155 | msim_load, /**< load */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3156 | NULL, /**< unload */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3157 | NULL, /**< destroy */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3158 | NULL, /**< ui_info */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3159 | &prpl_info, /**< extra_info */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3160 | NULL, /**< prefs_info */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3161 | msim_actions, /**< msim_actions */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3162 | NULL, /**< reserved1 */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3163 | NULL, /**< reserved2 */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3164 | NULL, /**< reserved3 */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3165 | NULL /**< reserved4 */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3166 | }; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3167 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3168 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3169 | #ifdef MSIM_SELF_TEST |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3170 | /** Test functions. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
3173 | * how msimprpl is architected. |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3174 | */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3175 | void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3176 | msim_test_all(void) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3177 | guint failures; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3178 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3179 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3180 | failures = 0; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3181 | failures += msim_test_msg(); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3182 | failures += msim_test_escaping(); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3183 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3184 | if (failures) { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
3186 | } else { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3187 | purple_debug_info("msim", "msim_test_all - all tests passed!\n"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3188 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3189 | exit(0); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3190 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3191 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3192 | /** Test MsimMessage for basic functionality. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3193 | int |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3194 | msim_test_msg(void) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3195 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3196 | MsimMessage *msg, *msg_cloned, *msg2; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3197 | GList *list; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3198 | gchar *packed, *packed_expected, *packed_cloned; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3199 | guint failures; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3200 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3201 | failures = 0; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3202 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3203 | purple_debug_info("msim", "\n\nTesting MsimMessage\n"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3204 | msg = msim_msg_new(NULL); /* Create a new, empty message. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3205 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
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>
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>
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>
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>
diff
changeset
|
3213 | msim_msg_dump("msg debug str=%s\n", msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3214 | packed = msim_msg_pack(msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3215 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3216 | purple_debug_info("msim", "msg packed=%s\n", packed); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3217 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3218 | packed_expected = "\\bx\\WFhY\\k1\\v1\\k1\\42\\k1" |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3219 | "\\v43\\k1\\v52/1xxx/2yyy\\k1\\v7\\final\\"; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
3223 | ++failures, packed, packed_expected); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3224 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3225 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3226 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3227 | msg_cloned = msim_msg_clone(msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3228 | packed_cloned = msim_msg_pack(msg_cloned); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3229 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
3233 | ++failures, packed_cloned, packed); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3234 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3235 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3236 | g_free(packed); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3237 | g_free(packed_cloned); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3238 | msim_msg_free(msg_cloned); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3239 | msim_msg_free(msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3240 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3241 | /* Try some of the more advanced functionality */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3242 | list = NULL; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3243 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3244 | list = g_list_prepend(list, "item3"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3245 | list = g_list_prepend(list, "item2"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3246 | list = g_list_prepend(list, "item1"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3247 | list = g_list_prepend(list, "item0"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3248 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3249 | msg = msim_msg_new(NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
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>
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>
diff
changeset
|
3254 | msg = msim_msg_append(msg, "list", MSIM_TYPE_LIST, list); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3255 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3256 | msim_msg_dump("msg with list=%s\n", msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
3258 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3259 | msg2 = msim_msg_new(NULL); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
3261 | msg2 = msim_msg_append(msg2, "body", MSIM_TYPE_DICTIONARY, msg); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
3264 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3265 | msim_msg_free(msg2); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3266 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3267 | return failures; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3268 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3269 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3270 | /** Test protocol-level escaping/unescaping. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3271 | int |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3272 | msim_test_escaping(void) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3273 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3274 | guint failures; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3275 | gchar *raw, *escaped, *unescaped, *expected; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3276 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3277 | failures = 0; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3278 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3279 | purple_debug_info("msim", "\n\nTesting escaping\n"); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3280 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3281 | raw = "hello/world\\hello/world"; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3282 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3283 | escaped = msim_escape(raw); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
3287 | purple_debug_info("msim", "!!!(%d), msim_escape failed: %s != %s\n", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3288 | ++failures, escaped, expected); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3289 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3290 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3291 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3292 | unescaped = msim_unescape(escaped); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3293 | g_free(escaped); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
3296 | purple_debug_info("msim", "!!!(%d), msim_unescape failed: %s != %s\n", |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3297 | ++failures, raw, unescaped); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3298 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3299 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3300 | return failures; |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3301 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3302 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
3442 | /** Initialize plugin. */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3443 | void |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3444 | init_plugin(PurplePlugin *plugin) |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3445 | { |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3446 | #ifdef MSIM_SELF_TEST |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3447 | msim_test_all(); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3448 | exit(0); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3449 | #endif /* MSIM_SELF_TEST */ |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
3464 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3465 | /* TODO: default to automatically try different ports. Make the user be |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
3467 | option = purple_account_option_string_new(_("Connect server"), "server", MSIM_SERVER); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
3469 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3470 | option = purple_account_option_int_new(_("Connect port"), "port", MSIM_PORT); |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
3472 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3473 | #ifdef MSIM_USER_WANTS_TO_CONFIGURE_STATUS_TEXT |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
3476 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
3479 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3480 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
3484 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3485 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3486 | #ifdef MSIM_USER_REALLY_CARES_ABOUT_PRECISE_FONT_SIZES |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
3489 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
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>
diff
changeset
|
3492 | #endif |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
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>
diff
changeset
|
3502 | } |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3503 | |
|
6199132c5266
merge of 'a721a4962093ce576eac6814370da699026c2036'
Jeff Connelly <jeff2@soc.pidgin.im>
diff
changeset
|
3504 | PURPLE_INIT_PLUGIN(myspace, init_plugin, info); |