summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libpurple/protocols/ircv3/purpleircv3connection.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/libpurple/protocols/ircv3/purpleircv3connection.c b/libpurple/protocols/ircv3/purpleircv3connection.c
index 5520103fb1..70c00667c3 100644
--- a/libpurple/protocols/ircv3/purpleircv3connection.c
+++ b/libpurple/protocols/ircv3/purpleircv3connection.c
@@ -423,8 +423,9 @@ purple_ircv3_connection_constructed(GObject *obj) {
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_ircv3_connection_constructed(GObject *obj) {
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. */