libpurple/protocols/ircv3/purpleircv3connection.c

changeset 42133
e9a794bfe183
parent 42030
7af8ab97086d
child 42250
c2c0eb8398da
--- a/libpurple/protocols/ircv3/purpleircv3connection.c	Thu Mar 09 02:55:35 2023 -0600
+++ b/libpurple/protocols/ircv3/purpleircv3connection.c	Fri Mar 10 01:10:24 2023 -0600
@@ -423,8 +423,9 @@
 	PurpleIRCv3Connection *connection = PURPLE_IRCV3_CONNECTION(obj);
 	PurpleIRCv3ConnectionPrivate *priv = NULL;
 	PurpleAccount *account = NULL;
-	gchar **userparts = NULL;
-	const gchar *username = NULL;
+	char **userparts = NULL;
+	const char *sasl_name = NULL;
+	const char *username = NULL;
 
 	G_OBJECT_CLASS(purple_ircv3_connection_parent_class)->constructed(obj);
 
@@ -437,6 +438,16 @@
 	purple_connection_set_display_name(PURPLE_CONNECTION(connection),
 	                                   userparts[0]);
 	priv->server_name = g_strdup(userparts[1]);
+
+	/* Check if the SASL login name is not set. If it isn't set, set it to the
+	 * current nick.
+	 */
+	sasl_name = purple_account_get_string(account, "sasl-login-name", "");
+	if(purple_strempty(sasl_name)) {
+		purple_account_set_string(account, "sasl-login-name", userparts[0]);
+	}
+
+	/* Free the userparts vector. */
 	g_strfreev(userparts);
 
 	/* Finally create our objects. */

mercurial