libpurple/protocols/bonjour/mdns_common.c

changeset 39816
803ebbb658d6
parent 39467
1f7525086da5
child 39960
4a5610d858ef
--- a/libpurple/protocols/bonjour/mdns_common.c	Thu Sep 05 22:57:55 2019 -0400
+++ b/libpurple/protocols/bonjour/mdns_common.c	Thu Sep 05 23:04:30 2019 -0400
@@ -70,9 +70,17 @@
 	return buffer;
 }
 
+static inline GSList *
+_add_txt_record(GSList *list, const gchar *key, const gchar *value)
+{
+	PurpleKeyValuePair *kvp = g_new0(PurpleKeyValuePair, 1);
+	kvp->key = g_strdup(key);
+	kvp->value = g_strdup(get_max_txt_record_value(key, value));
+	return g_slist_prepend(list, kvp);
+}
+
 static GSList *generate_presence_txt_records(BonjourDnsSd *data) {
 	GSList *ret = NULL;
-	PurpleKeyValuePair *kvp;
 	char portstring[6];
 	const char *jid, *aim, *email;
 
@@ -83,12 +91,6 @@
 	aim = purple_account_get_string(data->account, "AIM", NULL);
 	email = purple_account_get_string(data->account, "email", NULL);
 
-#define _M_ADD_R(k, v) \
-	kvp = g_new0(PurpleKeyValuePair, 1); \
-	kvp->key = g_strdup(k); \
-	kvp->value = g_strdup(get_max_txt_record_value(k, v)); \
-	ret = g_slist_prepend(ret, kvp); \
-
 	/* We should try to follow XEP-0174, but some clients have "issues", so we humor them.
 	 * See http://telepathy.freedesktop.org/wiki/SalutInteroperability
 	 */
@@ -101,34 +103,34 @@
 	 */
 
 	/* Needed by iChat */
-	_M_ADD_R("txtvers", "1")
+	ret = _add_txt_record(ret, "txtvers", "1");
 	/* Needed by Gaim/Pidgin <= 2.0.1 (remove at some point) */
-	_M_ADD_R("1st", data->first)
+	ret = _add_txt_record(ret, "1st", data->first);
 	/* Needed by Gaim/Pidgin <= 2.0.1 (remove at some point) */
-	_M_ADD_R("last", data->last)
+	ret = _add_txt_record(ret, "last", data->last);
 	/* Needed by Adium */
-	_M_ADD_R("port.p2pj", portstring)
+	ret = _add_txt_record(ret, "port.p2pj", portstring);
 	/* Needed by iChat, Gaim/Pidgin <= 2.0.1 */
-	_M_ADD_R("status", data->status)
-	_M_ADD_R("node", "libpurple")
-	_M_ADD_R("ver", VERSION)
+	ret = _add_txt_record(ret, "status", data->status);
+	ret = _add_txt_record(ret, "node", "libpurple");
+	ret = _add_txt_record(ret, "ver", VERSION);
 	/* Currently always set to "!" since we don't support AV and wont ever be in a conference */
-	_M_ADD_R("vc", data->vc)
+	ret = _add_txt_record(ret, "vc", data->vc);
 	if (email != NULL && *email != '\0') {
-		_M_ADD_R("email", email)
+		ret = _add_txt_record(ret, "email", email);
 	}
 	if (jid != NULL && *jid != '\0') {
-		_M_ADD_R("jid", jid)
+		ret = _add_txt_record(ret, "jid", jid);
 	}
 	/* Nonstandard, but used by iChat */
 	if (aim != NULL && *aim != '\0') {
-		_M_ADD_R("AIM", aim)
+		ret = _add_txt_record(ret, "AIM", aim);
 	}
 	if (data->msg != NULL && *data->msg != '\0') {
-		_M_ADD_R("msg", data->msg)
+		ret = _add_txt_record(ret, "msg", data->msg);
 	}
 	if (data->phsh != NULL && *data->phsh != '\0') {
-		_M_ADD_R("phsh", data->phsh)
+		ret = _add_txt_record(ret, "phsh", data->phsh);
 	}
 
 	/* TODO: ext, nick */

mercurial