# HG changeset patch # User Elliott Sales de Andrade # Date 1260834291 0 # Node ID 8302e46e56c39344489a99d35539adfecc22021a # Parent 38c32318156c0ba26859f95c1dbd7f262c48c4e7 When adding users to an MSN chat, don't add them again if the same passport is in the conversation. That is, ignore people logged in at more than one location. diff -r 38c32318156c -r 8302e46e56c3 libpurple/protocols/msn/switchboard.c --- a/libpurple/protocols/msn/switchboard.c Mon Dec 14 07:15:24 2009 +0000 +++ b/libpurple/protocols/msn/switchboard.c Mon Dec 14 23:44:51 2009 +0000 @@ -222,13 +222,28 @@ { MsnCmdProc *cmdproc; PurpleAccount *account; + char *semicolon; + char *passport; g_return_if_fail(swboard != NULL); cmdproc = swboard->cmdproc; account = cmdproc->session->account; - swboard->users = g_list_prepend(swboard->users, g_strdup(user)); + semicolon = strchr(user, ';'); + /* We don't really care about the machine ID. */ + if (semicolon) + passport = g_strndup(user, semicolon - user); + else + passport = g_strdup(user); + + /* Don't add multiple endpoints to the conversation. */ + if (g_list_find_custom(swboard->users, passport, (GCompareFunc)strcmp)) { + g_free(passport); + return; + } + + swboard->users = g_list_prepend(swboard->users, passport); swboard->current_users++; swboard->empty = FALSE;