summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKa-Hing Cheung <khc@pidgin.im>2008-03-21 04:45:03 +0000
committerKa-Hing Cheung <khc@pidgin.im>2008-03-21 04:45:03 +0000
commitaa4ec9bd054f31f30389067124f3213237ddd925 (patch)
tree8ad108de6e0ff9e4df13cad7a8577bea3bb617eb
parent5cc8a5f4b7aaa97f4a50512ec02cc124124c30f1 (diff)
downloadpidgin-aa4ec9bd054f31f30389067124f3213237ddd925.tar.gz
Another patch from Maiku that improves the way we send mobile messages, this
probably needs another patch before it's useful. References #5232
-rw-r--r--libpurple/protocols/msn/msn.c18
-rw-r--r--libpurple/protocols/msn/notification.c2
-rw-r--r--libpurple/protocols/msn/switchboard.c7
-rw-r--r--libpurple/protocols/msn/transaction.h5
4 files changed, 23 insertions, 9 deletions
diff --git a/libpurple/protocols/msn/msn.c b/libpurple/protocols/msn/msn.c
index 5d701f2555..ceb99623f8 100644
--- a/libpurple/protocols/msn/msn.c
+++ b/libpurple/protocols/msn/msn.c
@@ -236,7 +236,9 @@ send_to_mobile(PurpleConnection *gc, const char *who, const char *entry)
MsnSession *session;
MsnCmdProc *cmdproc;
MsnPage *page;
- char *payload;
+ MsnUser *user;
+ char *payload = NULL;
+ const char *mobile_number = NULL;
size_t payload_len;
session = gc->proto_data;
@@ -247,7 +249,19 @@ send_to_mobile(PurpleConnection *gc, const char *who, const char *entry)
payload = msn_page_gen_payload(page, &payload_len);
- trans = msn_transaction_new(cmdproc, "PGD", "%s 1 %d", who, payload_len);
+ if ((user = msn_userlist_find_user(session->userlist, who)) &&
+ (mobile_number = msn_user_get_mobile_phone(user)) &&
+ mobile_number[0] == '+') {
+ /* if msn_user_get_mobile_phone() has a + in front, it's a number
+ that from the buddy's contact card */
+ trans = msn_transaction_new(cmdproc, "PGD", "tel:%s 1 %d",
+ mobile_number, payload_len);
+ } else {
+ /* otherwise we send to whatever phone number the buddy registered
+ with msn */
+ trans = msn_transaction_new(cmdproc, "PGD", "%s 1 %d", who,
+ payload_len);
+ }
msn_transaction_set_payload(trans, payload, payload_len);
g_free(payload);
diff --git a/libpurple/protocols/msn/notification.c b/libpurple/protocols/msn/notification.c
index 8b09af8ce8..ca7e6c8d84 100644
--- a/libpurple/protocols/msn/notification.c
+++ b/libpurple/protocols/msn/notification.c
@@ -461,7 +461,7 @@ ubm_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
passport = msg->remote_user;
content_type = msn_message_get_content_type(msg);
- purple_debug_info("MSNP14","type:%d\n",content_type);
+ purple_debug_info("MSNP14", "type:%s\n", content_type);
if(!strcmp(content_type,"text/plain")){
const char *value;
const char *body;
diff --git a/libpurple/protocols/msn/switchboard.c b/libpurple/protocols/msn/switchboard.c
index 03eee5fbb9..db60d7b551 100644
--- a/libpurple/protocols/msn/switchboard.c
+++ b/libpurple/protocols/msn/switchboard.c
@@ -1194,9 +1194,10 @@ xfr_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error)
swboard = trans->data;
- purple_debug_info("msn", "xfr_error %i for %s: trans %x, command %s, reason %i\n",
- error, (swboard->im_user ? swboard->im_user : "(null)"), trans,
- (trans->command ? trans->command : "(null)"), reason);
+ purple_debug_info("msn",
+ "xfr_error %i for %s: trans %p, command %s, reason %i\n",
+ error, (swboard->im_user ? swboard->im_user : "(null)"), trans,
+ (trans->command ? trans->command : "(null)"), reason);
swboard_error_helper(swboard, reason, swboard->im_user);
}
diff --git a/libpurple/protocols/msn/transaction.h b/libpurple/protocols/msn/transaction.h
index 4c8aade7f5..b7b40329b4 100644
--- a/libpurple/protocols/msn/transaction.h
+++ b/libpurple/protocols/msn/transaction.h
@@ -61,9 +61,8 @@ struct _MsnTransaction
this transaction. */
};
-MsnTransaction *msn_transaction_new(MsnCmdProc *cmdproc,
- const char *command,
- const char *format, ...);
+MsnTransaction *msn_transaction_new(MsnCmdProc *cmdproc, const char *command,
+ const char *format, ...) G_GNUC_PRINTF(3, 4);
void msn_transaction_destroy(MsnTransaction *trans);
char *msn_transaction_to_string(MsnTransaction *trans);