changeset 28079:49cb3fc2c01a

Add the camera-v1 cap or else Gmail refuses to accept we're video enabled.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Fri, 31 Jul 2009 04:20:30 +0000
parents 7da3bf6d3b2c
children 0e49276d9ba1
files libpurple/protocols/jabber/disco.c libpurple/protocols/jabber/presence.c
diffstat 2 files changed, 14 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/protocols/jabber/disco.c	Thu Jul 30 03:42:26 2009 +0000
+++ b/libpurple/protocols/jabber/disco.c	Fri Jul 31 04:20:30 2009 +0000
@@ -166,6 +166,18 @@
 			 */
 			xmlnode *feature = xmlnode_new_child(query, "feature");
 			xmlnode_set_attrib(feature, "var", "http://www.google.com/xmpp/protocol/video/v1");
+		} else if (g_str_equal(node, CAPS0115_NODE "#" "camera-v1")) {
+			/*
+			 * HUGE HACK! We advertise this ext (see jabber_presence_create_js
+			 * where we add <c/> to the <presence/>) for the Google Talk
+			 * clients that don't actually check disco#info features.
+			 *
+			 * This specific feature is redundant but is what
+			 * node='http://mail.google.com/xmpp/client/caps', ver='1.1'
+			 * advertises as 'camera-v1'.
+			 */
+			xmlnode *feature = xmlnode_new_child(query, "feature");
+			xmlnode_set_attrib(feature, "var", "http://www.google.com/xmpp/protocol/camera/v1");
 #endif
 		} else {
 			xmlnode *error, *inf;
--- a/libpurple/protocols/jabber/presence.c	Thu Jul 30 03:42:26 2009 +0000
+++ b/libpurple/protocols/jabber/presence.c	Fri Jul 31 04:20:30 2009 +0000
@@ -324,11 +324,11 @@
 	video_enabled = jabber_video_enabled(js, NULL /* unused */);
 
 	if (audio_enabled && video_enabled)
-		xmlnode_set_attrib(c, "ext", "voice-v1 video-v1");
+		xmlnode_set_attrib(c, "ext", "voice-v1 camera-v1 video-v1");
 	else if (audio_enabled)
 		xmlnode_set_attrib(c, "ext", "voice-v1");
 	else if (video_enabled)
-		xmlnode_set_attrib(c, "ext", "video-v1");
+		xmlnode_set_attrib(c, "ext", "camera-v1 video-v1");
 #endif
 
 	return presence;