libpurple/xfer.c

changeset 38842
98227c37cd17
parent 38840
33326576c72b
child 38847
6b3d5359cb93
--- a/libpurple/xfer.c	Sun Nov 26 01:30:28 2017 -0600
+++ b/libpurple/xfer.c	Sun Nov 26 02:15:23 2017 -0600
@@ -2360,21 +2360,23 @@
 	g_return_val_if_fail(who != NULL, NULL);
 
 	protocol = purple_protocols_find(purple_account_get_protocol_id(account));
-
-	g_return_val_if_fail(PURPLE_IS_PROTOCOL(protocol), NULL);
-
-	if (PURPLE_PROTOCOL_IMPLEMENTS(protocol, FACTORY_IFACE, xfer_new))
-		xfer = purple_protocol_factory_iface_xfer_new(protocol, account, type,
-				who);
-	else
+	if (PURPLE_IS_PROTOCOL_XFER(protocol)) {
+		PurpleConnection *connection = purple_account_get_connection(account);
+
+		xfer = purple_protocol_xfer_new_xfer(
+			PURPLE_PROTOCOL_XFER(protocol),
+			connection,
+			/* TODO: this should support the type */
+			who
+		);
+	} else {	
 		xfer = g_object_new(PURPLE_TYPE_XFER,
 			"account",     account,
 			"type",        type,
 			"remote-user", who,
 			NULL
 		);
-
-	g_return_val_if_fail(xfer != NULL, NULL);
+	}
 
 	return xfer;
 }

mercurial