libpurple/protocols/jabber/google.c

changeset 27636
68aa74cdf4e4
parent 27277
8a2ecbdd70e4
parent 27507
6522fc5e4102
child 27740
4a6820ab0b1e
--- a/libpurple/protocols/jabber/google.c	Wed Jun 10 04:42:11 2009 +0000
+++ b/libpurple/protocols/jabber/google.c	Mon Jul 06 04:37:41 2009 +0000
@@ -787,7 +787,7 @@
 {
 	xmlnode *child;
 	xmlnode *message;
-	const char *to, *url;
+	const char *to, *default_url;
 	const char *in_str;
 	char *to_name;
 
@@ -837,16 +837,20 @@
 
 	to = xmlnode_get_attrib(packet, "to");
 	to_name = jabber_get_bare_jid(to);
-	url = xmlnode_get_attrib(child, "url");
-	if (!url || !*url)
-		url = "http://www.gmail.com";
+	default_url = xmlnode_get_attrib(child, "url");
+	if (default_url == NULL || *default_url == '\0')
+		default_url = "http://mail.google.com/mail";
 
 	message= xmlnode_get_child(child, "mail-thread-info");
 	for (i=0; message; message = xmlnode_get_next_twin(message), i++) {
 		xmlnode *sender_node, *subject_node;
-		const char *from, *tid;
+		const char *from, *tid, *url;
 		char *subject;
 
+		url = xmlnode_get_attrib(message, "url");
+		if (url == NULL || *url == '\0')
+			url = default_url;
+
 		subject_node = xmlnode_get_child(message, "subject");
 		sender_node  = xmlnode_get_child(message, "senders");
 		sender_node  = xmlnode_get_child(sender_node, "sender");
@@ -939,10 +943,25 @@
 
 void jabber_gmail_init(JabberStream *js) {
 	JabberIq *iq;
+	xmlnode *usersetting, *mailnotifications;
 
-	if (!purple_account_get_check_mail(js->gc->account))
+	if (!purple_account_get_check_mail(purple_connection_get_account(js->gc)))
 		return;
 
+	/*
+	 * Quoting http://code.google.com/apis/talk/jep_extensions/usersettings.html:
+	 * To ensure better compatibility with other clients, rather than
+	 * setting this value to "false" to turn off notifications, it is
+	 * recommended that a client set this to "true" and filter incoming
+	 * email notifications itself.
+	 */
+	iq = jabber_iq_new(js, JABBER_IQ_SET);
+	usersetting = xmlnode_new_child(iq->node, "usersetting");
+	xmlnode_set_namespace(usersetting, "google:setting");
+	mailnotifications = xmlnode_new_child(usersetting, "mailnotifications");
+	xmlnode_set_attrib(mailnotifications, "value", "true");
+	jabber_iq_send(iq);
+
 	iq = jabber_iq_new_query(js, JABBER_IQ_GET, "google:mail:notify");
 	jabber_iq_set_callback(iq, jabber_gmail_parse, NULL);
 	jabber_iq_send(iq);

mercurial