libpurple/protocols/msn/msn.c

branch
vv.ticket34
changeset 22679
c1d506de1758
parent 22648
e286d795c5f9
parent 22670
2ad82dd45c56
child 23707
480f94157418
--- a/libpurple/protocols/msn/msn.c	Sat Mar 22 04:51:58 2008 +0000
+++ b/libpurple/protocols/msn/msn.c	Sat Mar 22 04:56:03 2008 +0000
@@ -236,7 +236,9 @@
 	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 @@
 
 	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);

mercurial