aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/jabber
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/jabber')
-rw-r--r--protocols/jabber/iq.c4
-rw-r--r--protocols/jabber/jabber.c9
-rw-r--r--protocols/jabber/jabber.h1
-rw-r--r--protocols/jabber/jabber_util.c4
4 files changed, 14 insertions, 4 deletions
diff --git a/protocols/jabber/iq.c b/protocols/jabber/iq.c
index 61417bcc..cf1ff298 100644
--- a/protocols/jabber/iq.c
+++ b/protocols/jabber/iq.c
@@ -357,10 +357,6 @@ xt_status jabber_pkt_bind_sess( struct im_connection *ic, struct xt_node *node,
if( s )
*s = '\0';
jabber_set_me( ic, c->text );
- imcb_log( ic, "Server claims your JID is `%s' instead of `%s'. "
- "This mismatch may cause problems with groupchats "
- "and possibly other things.",
- c->text, ic->acc->user );
if( s )
*s = '/';
}
diff --git a/protocols/jabber/jabber.c b/protocols/jabber/jabber.c
index 4b5cb3a1..ccc13f47 100644
--- a/protocols/jabber/jabber.c
+++ b/protocols/jabber/jabber.c
@@ -317,6 +317,7 @@ static void jabber_logout( struct im_connection *ic )
g_free( jd->oauth2_access_token );
g_free( jd->away_message );
+ g_free( jd->internal_jid );
g_free( jd->username );
g_free( jd->me );
g_free( jd );
@@ -620,6 +621,13 @@ void *jabber_buddy_action( struct bee_user *bu, const char *action, char * const
return NULL;
}
+gboolean jabber_handle_is_self( struct im_connection *ic, const char *who ) {
+ struct jabber_data *jd = ic->proto_data;
+ return ( ( g_strcasecmp( who, ic->acc->user ) == 0 ) ||
+ ( jd->internal_jid &&
+ g_strcasecmp( who, jd->internal_jid ) == 0 ) );
+}
+
void jabber_initmodule()
{
struct prpl *ret = g_new0( struct prpl, 1 );
@@ -647,6 +655,7 @@ void jabber_initmodule()
ret->keepalive = jabber_keepalive;
ret->send_typing = jabber_send_typing;
ret->handle_cmp = g_strcasecmp;
+ ret->handle_is_self = jabber_handle_is_self;
ret->transfer_request = jabber_si_transfer_request;
ret->buddy_action_list = jabber_buddy_action_list;
ret->buddy_action = jabber_buddy_action;
diff --git a/protocols/jabber/jabber.h b/protocols/jabber/jabber.h
index eb99f9ca..a5882767 100644
--- a/protocols/jabber/jabber.h
+++ b/protocols/jabber/jabber.h
@@ -96,6 +96,7 @@ struct jabber_data
char *username; /* USERNAME@server */
char *server; /* username@SERVER -=> server/domain, not hostname */
char *me; /* bare jid */
+ char *internal_jid;
const struct oauth2_service *oauth2_service;
char *oauth2_access_token;
diff --git a/protocols/jabber/jabber_util.c b/protocols/jabber/jabber_util.c
index d6396802..1a3d9fd4 100644
--- a/protocols/jabber/jabber_util.c
+++ b/protocols/jabber/jabber_util.c
@@ -823,6 +823,10 @@ gboolean jabber_set_me( struct im_connection *ic, const char *me )
jd->server = strchr( jd->me, '@' );
jd->username = g_strndup( jd->me, jd->server - jd->me );
jd->server ++;
+
+ /* Set the "internal" account username, for groupchats */
+ g_free( jd->internal_jid );
+ jd->internal_jid = g_strdup( jd->me );
return TRUE;
}