diff options
author | Ka-Hing Cheung <khc@pidgin.im> | 2008-03-21 04:45:03 +0000 |
---|---|---|
committer | Ka-Hing Cheung <khc@pidgin.im> | 2008-03-21 04:45:03 +0000 |
commit | aa4ec9bd054f31f30389067124f3213237ddd925 (patch) | |
tree | 8ad108de6e0ff9e4df13cad7a8577bea3bb617eb | |
parent | 5cc8a5f4b7aaa97f4a50512ec02cc124124c30f1 (diff) | |
download | pidgin-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.c | 18 | ||||
-rw-r--r-- | libpurple/protocols/msn/notification.c | 2 | ||||
-rw-r--r-- | libpurple/protocols/msn/switchboard.c | 7 | ||||
-rw-r--r-- | libpurple/protocols/msn/transaction.h | 5 |
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); |