--- 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. */