aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/msn/ns.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2010-08-18 20:21:44 +0100
committerWilmer van der Gaast <wilmer@gaast.net>2010-08-18 20:21:44 +0100
commit80175a1558f297d5505ed4e91a261781ec9c65a2 (patch)
tree64858b0b395fa81b0aae9b101c897ab4dd79a6ea /protocols/msn/ns.c
parente0e15468835d5ae5bce54a28bd7a5b7aea66a1e2 (diff)
Fetch the user's profile to see if there's a display name set there. If
there is, the one in the address book should be ignored. No support for changing the profile yet though.
Diffstat (limited to 'protocols/msn/ns.c')
-rw-r--r--protocols/msn/ns.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/protocols/msn/ns.c b/protocols/msn/ns.c
index c9b01ef2..4b779a58 100644
--- a/protocols/msn/ns.c
+++ b/protocols/msn/ns.c
@@ -258,23 +258,14 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts )
else if( strcmp( cmd[0], "BLP" ) == 0 )
{
msn_ns_send_adl_start( ic );
-
- if( md->adl_todo < 0 && !( ic->flags & OPT_LOGGED_IN ) )
- return msn_ns_set_display_name( ic, set_getstr( &ic->acc->set, "display_name" ) );
+ return msn_ns_finish_login( ic );
}
else if( strcmp( cmd[0], "ADL" ) == 0 )
{
if( num_parts >= 3 && strcmp( cmd[2], "OK" ) == 0 )
{
msn_ns_send_adl( ic );
-
- if( md->adl_todo < 0 && !( ic->flags & OPT_LOGGED_IN ) )
- {
- msn_ns_send_adl( ic );
-
- if( md->adl_todo < 0 && !( ic->flags & OPT_LOGGED_IN ) )
- return msn_ns_set_display_name( ic, set_getstr( &ic->acc->set, "display_name" ) );
- }
+ return msn_ns_finish_login( ic );
}
else if( num_parts >= 3 )
{
@@ -817,3 +808,19 @@ static void msn_ns_send_adl_start( struct im_connection *ic )
msn_ns_send_adl( ic );
}
+
+int msn_ns_finish_login( struct im_connection *ic )
+{
+ struct msn_data *md = ic->proto_data;
+
+ if( ic->flags & OPT_LOGGED_IN )
+ return 1;
+
+ if( md->adl_todo < 0 )
+ md->flags |= MSN_DONE_ADL;
+
+ if( ( md->flags & MSN_DONE_ADL ) && ( md->flags & MSN_GOT_PROFILE ) )
+ return msn_ns_set_display_name( ic, set_getstr( &ic->acc->set, "display_name" ) );
+ else
+ return 1;
+}