besser82 / rpms / pidgin

Forked from rpms/pidgin 6 years ago
Clone
David Woodhouse 6087050
David Woodhouse 6087050
# HG changeset patch
David Woodhouse 6087050
# User Jakub Adam <jakub.adam@ktknet.cz>
David Woodhouse 6087050
# Date 1398231090 -7200
David Woodhouse 6087050
# Node ID fcecf7f838e266dc2c3bfd306df58ade3fc3ac93
David Woodhouse 6087050
# Parent  2415067473ba10a2090d6130b93204a3b537b05c
David Woodhouse 6087050
Add MS-TURN TCP support
David Woodhouse 6087050
David Woodhouse 6087050
The old TCP support never worked. Older versions of farstream defined
David Woodhouse 6087050
FS_NETWORK_PROTOCOL_TCP but there were even *tests* to ensure that any
David Woodhouse 6087050
attempt to use it would result in FS_ERROR_INVALID_ARGUMENTS.
David Woodhouse 6087050
David Woodhouse 6087050
This adds the three variants of TCP support that are now supported in
David Woodhouse 6087050
farstream 0.2.6 onwards, and bumps the requirement in configure.ac
David Woodhouse 6087050
accordingly.
David Woodhouse 6087050
David Woodhouse 6087050
Olivier says the Google ones should probably be passive. Since they
David Woodhouse 6087050
never worked anyway, I'm not going to lose too much sleep over them.
David Woodhouse 6087050
David Woodhouse 6087050
[dwmw2: reworked to remain compatible with the farstream 0.1 build]
David Woodhouse 6087050
David Woodhouse 6087050
diff --git a/configure.ac b/configure.ac
David Woodhouse 6087050
--- a/configure.ac
David Woodhouse 6087050
+++ b/configure.ac
David Woodhouse 6087050
@@ -868,7 +868,7 @@
David Woodhouse 6087050
 	enable_farstream="$enableval", enable_farstream="yes")
David Woodhouse 6087050
 if test "x$enable_farstream" != "xno"; then
David Woodhouse 6087050
 	if test "x$with_gstreamer" == "x1.0"; then
David Woodhouse 6087050
-		PKG_CHECK_MODULES(FARSTREAM, [farstream-0.2], [
David Woodhouse 6087050
+		PKG_CHECK_MODULES(FARSTREAM, [farstream-0.2 >= 0.2.6], [
David Woodhouse 6087050
 			AC_SUBST(FARSTREAM_CFLAGS)
David Woodhouse 6087050
 			AC_SUBST(FARSTREAM_LIBS)
David Woodhouse 6087050
 		], [
David Woodhouse 6087050
diff --git a/libpurple/media/backend-fs2.c b/libpurple/media/backend-fs2.c
David Woodhouse 6087050
--- a/libpurple/media/backend-fs2.c
David Woodhouse 6087050
+++ b/libpurple/media/backend-fs2.c
David Woodhouse 6087050
@@ -225,10 +225,17 @@
David Woodhouse 6087050
 	switch (protocol) {
David Woodhouse 6087050
 		case PURPLE_MEDIA_NETWORK_PROTOCOL_UDP:
David Woodhouse 6087050
 			return FS_NETWORK_PROTOCOL_UDP;
David Woodhouse 6087050
-		case PURPLE_MEDIA_NETWORK_PROTOCOL_TCP:
David Woodhouse 6087050
-			return FS_NETWORK_PROTOCOL_TCP;
David Woodhouse 6087050
+#if GST_CHECK_VERSION(1,0,0)
David Woodhouse 6087050
+		case PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_PASSIVE:
David Woodhouse 6087050
+			return FS_NETWORK_PROTOCOL_TCP_PASSIVE;
David Woodhouse 6087050
+		case PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_ACTIVE:
David Woodhouse 6087050
+			return FS_NETWORK_PROTOCOL_TCP_ACTIVE;
David Woodhouse 6087050
+		case PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_SO:
David Woodhouse 6087050
+			return FS_NETWORK_PROTOCOL_TCP_SO;
David Woodhouse 6087050
+#endif
David Woodhouse 6087050
+		default:
David Woodhouse 6087050
+			g_return_val_if_reached(FS_NETWORK_PROTOCOL_TCP);
David Woodhouse 6087050
 	}
David Woodhouse 6087050
-	g_return_val_if_reached(FS_NETWORK_PROTOCOL_TCP);
David Woodhouse 6087050
 }
David Woodhouse 6087050
 
David Woodhouse 6087050
 static PurpleMediaNetworkProtocol
David Woodhouse 6087050
@@ -237,10 +244,17 @@
David Woodhouse 6087050
 	switch (protocol) {
David Woodhouse 6087050
 		case FS_NETWORK_PROTOCOL_UDP:
David Woodhouse 6087050
 			return PURPLE_MEDIA_NETWORK_PROTOCOL_UDP;
David Woodhouse 6087050
-		case FS_NETWORK_PROTOCOL_TCP:
David Woodhouse 6087050
-			return PURPLE_MEDIA_NETWORK_PROTOCOL_TCP;
David Woodhouse 6087050
+#if GST_CHECK_VERSION(1,0,0)
David Woodhouse 6087050
+		case FS_NETWORK_PROTOCOL_TCP_PASSIVE:
David Woodhouse 6087050
+			return PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_PASSIVE;
David Woodhouse 6087050
+		case FS_NETWORK_PROTOCOL_TCP_ACTIVE:
David Woodhouse 6087050
+			return PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_ACTIVE;
David Woodhouse 6087050
+		case FS_NETWORK_PROTOCOL_TCP_SO:
David Woodhouse 6087050
+			return PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_SO;
David Woodhouse 6087050
+#endif
David Woodhouse 6087050
+		default:
David Woodhouse 6087050
+			g_return_val_if_reached(PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_PASSIVE);
David Woodhouse 6087050
 	}
David Woodhouse 6087050
-	g_return_val_if_reached(PURPLE_MEDIA_NETWORK_PROTOCOL_TCP);
David Woodhouse 6087050
 }
David Woodhouse 6087050
 
David Woodhouse 6087050
 #if GST_CHECK_VERSION(1,0,0)
David Woodhouse 6087050
diff --git a/libpurple/media/enum-types.c b/libpurple/media/enum-types.c
David Woodhouse 6087050
--- a/libpurple/media/enum-types.c
David Woodhouse 6087050
+++ b/libpurple/media/enum-types.c
David Woodhouse 6087050
@@ -145,9 +145,15 @@
David Woodhouse 6087050
 			{ PURPLE_MEDIA_NETWORK_PROTOCOL_UDP,
David Woodhouse 6087050
 					"PURPLE_MEDIA_NETWORK_PROTOCOL_UDP",
David Woodhouse 6087050
 					"udp" },
David Woodhouse 6087050
-			{ PURPLE_MEDIA_NETWORK_PROTOCOL_TCP,
David Woodhouse 6087050
-					"PURPLE_MEDIA_NETWORK_PROTOCOL_TCP",
David Woodhouse 6087050
-					"tcp" },
David Woodhouse 6087050
+			{ PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_PASSIVE,
David Woodhouse 6087050
+					"PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_PASSIVE",
David Woodhouse 6087050
+					"tcp passive" },
David Woodhouse 6087050
+			{ PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_ACTIVE,
David Woodhouse 6087050
+					"PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_ACTIVE",
David Woodhouse 6087050
+					"tcp active" },
David Woodhouse 6087050
+			{ PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_SO,
David Woodhouse 6087050
+					"PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_SO",
David Woodhouse 6087050
+					"tcp so" },
David Woodhouse 6087050
 			{ 0, NULL, NULL }
David Woodhouse 6087050
 		};
David Woodhouse 6087050
 		type = g_enum_register_static("PurpleMediaNetworkProtocol",
David Woodhouse 6087050
diff --git a/libpurple/media/enum-types.h b/libpurple/media/enum-types.h
David Woodhouse 6087050
--- a/libpurple/media/enum-types.h
David Woodhouse 6087050
+++ b/libpurple/media/enum-types.h
David Woodhouse 6087050
@@ -82,7 +82,9 @@
David Woodhouse 6087050
 /** Media network protocols */
David Woodhouse 6087050
 typedef enum {
David Woodhouse 6087050
 	PURPLE_MEDIA_NETWORK_PROTOCOL_UDP,
David Woodhouse 6087050
-	PURPLE_MEDIA_NETWORK_PROTOCOL_TCP
David Woodhouse 6087050
+	PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_PASSIVE,
David Woodhouse 6087050
+	PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_ACTIVE,
David Woodhouse 6087050
+	PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_SO,
David Woodhouse 6087050
 } PurpleMediaNetworkProtocol;
David Woodhouse 6087050
 
David Woodhouse 6087050
 /** Media session types */
David Woodhouse 6087050
diff --git a/libpurple/protocols/jabber/google/google_session.c b/libpurple/protocols/jabber/google/google_session.c
David Woodhouse 6087050
--- a/libpurple/protocols/jabber/google/google_session.c
David Woodhouse 6087050
+++ b/libpurple/protocols/jabber/google/google_session.c
David Woodhouse 6087050
@@ -657,7 +657,7 @@
David Woodhouse 6087050
 					candidate_type,
David Woodhouse 6087050
 					purple_strequal(protocol, "udp") ?
David Woodhouse 6087050
 							PURPLE_MEDIA_NETWORK_PROTOCOL_UDP :
David Woodhouse 6087050
-							PURPLE_MEDIA_NETWORK_PROTOCOL_TCP,
David Woodhouse 6087050
+							PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_PASSIVE,
David Woodhouse 6087050
 					address,
David Woodhouse 6087050
 					atoi(port));
David Woodhouse 6087050
 			g_object_set(info, "username", xmlnode_get_attrib(cand, "username"),
David Woodhouse 6087050