diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2007-04-15 15:39:35 -0700 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2007-04-15 15:39:35 -0700 |
commit | c2fb38096ea4e75a680e57e103d4a4986aa84c75 (patch) | |
tree | d0a8fd0a602867dd6dc406bdc8206fa049ba757e /protocols/msn/ns.c | |
parent | cd4723c257f9f7bd8d4a46c6562f93c2aefc3dbb (diff) |
Cleaned up struct im_connection. No more username/password stuff since
it's in acc too. wants_to_die is now an argument to imc_logout().
Diffstat (limited to 'protocols/msn/ns.c')
-rw-r--r-- | protocols/msn/ns.c | 62 |
1 files changed, 32 insertions, 30 deletions
diff --git a/protocols/msn/ns.c b/protocols/msn/ns.c index 81ad1941..77bb4939 100644 --- a/protocols/msn/ns.c +++ b/protocols/msn/ns.c @@ -47,7 +47,7 @@ gboolean msn_ns_connected( gpointer data, gint source, b_input_condition cond ) if( source == -1 ) { imc_error( ic, "Could not connect to server" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return FALSE; } @@ -89,7 +89,7 @@ static gboolean msn_ns_callback( gpointer data, gint source, b_input_condition c if( msn_handler( md->handler ) == -1 ) /* Don't do this on ret == 0, it's already done then. */ { imc_error( ic, "Error while reading from server" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return FALSE; } @@ -114,18 +114,18 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( cmd[2] && strncmp( cmd[2], "MSNP8", 5 ) != 0 ) { imc_error( ic, "Unsupported protocol" ); - imc_logout( ic ); + imc_logout( ic, FALSE ); return( 0 ); } g_snprintf( buf, sizeof( buf ), "CVR %d 0x0409 mac 10.2.0 ppc macmsgs 3.5.1 macmsgs %s\r\n", - ++md->trId, ic->username ); + ++md->trId, ic->acc->user ); return( msn_write( ic, buf, strlen( buf ) ) ); } else if( strcmp( cmd[0], "CVR" ) == 0 ) { /* We don't give a damn about the information we just received */ - g_snprintf( buf, sizeof( buf ), "USR %d TWN I %s\r\n", ++md->trId, ic->username ); + g_snprintf( buf, sizeof( buf ), "USR %d TWN I %s\r\n", ++md->trId, ic->acc->user ); return( msn_write( ic, buf, strlen( buf ) ) ); } else if( strcmp( cmd[0], "XFR" ) == 0 ) @@ -143,7 +143,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( !server ) { imc_error( ic, "Syntax error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } *server = 0; @@ -162,7 +162,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( !server ) { imc_error( ic, "Syntax error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } *server = 0; @@ -172,7 +172,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( strcmp( cmd[4], "CKI" ) != 0 ) { imc_error( ic, "Unknown authentication method for switchboard" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } @@ -204,7 +204,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) else { imc_error( ic, "Syntax error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } } @@ -213,10 +213,10 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( num_parts == 5 && strcmp( cmd[2], "TWN" ) == 0 && strcmp( cmd[3], "S" ) == 0 ) { /* Time for some Passport black magic... */ - if( !passport_get_id( msn_auth_got_passport_id, ic, ic->username, ic->password, cmd[4] ) ) + if( !passport_get_id( msn_auth_got_passport_id, ic, ic->acc->user, ic->acc->pass, cmd[4] ) ) { imc_error( ic, "Error while contacting Passport server" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } } @@ -243,7 +243,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) else { imc_error( ic, "Unknown authentication type" ); - imc_logout( ic ); + imc_logout( ic, FALSE ); return( 0 ); } } @@ -252,7 +252,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( num_parts != 4 ) { imc_error( ic, "Syntax error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } @@ -261,7 +261,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( md->handler->msglen <= 0 ) { imc_error( ic, "Syntax error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } } @@ -292,7 +292,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( num_parts != 4 && num_parts != 5 ) { imc_error( ic, "Syntax error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } @@ -344,7 +344,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( num_parts != 4 ) { imc_error( ic, "Syntax error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } @@ -363,7 +363,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( num_parts != 3 ) { imc_error( ic, "Syntax error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } @@ -385,7 +385,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( num_parts != 6 ) { imc_error( ic, "Syntax error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } @@ -413,7 +413,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( num_parts != 5 ) { imc_error( ic, "Syntax error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } @@ -438,7 +438,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( num_parts != 7 ) { imc_error( ic, "Syntax error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } @@ -448,7 +448,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( !server ) { imc_error( ic, "Syntax error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } *server = 0; @@ -458,7 +458,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( strcmp( cmd[3], "CKI" ) != 0 ) { imc_error( ic, "Unknown authentication method for switchboard" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } @@ -478,7 +478,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( strchr( cmd[4], '@' ) == NULL ) { imc_error( ic, "Syntax error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } @@ -496,10 +496,12 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) } else if( strcmp( cmd[0], "OUT" ) == 0 ) { + int allow_reconnect = TRUE; + if( cmd[1] && strcmp( cmd[1], "OTH" ) == 0 ) { imc_error( ic, "Someone else logged in with your account" ); - ic->wants_to_die = 1; + allow_reconnect = FALSE; } else if( cmd[1] && strcmp( cmd[1], "SSD" ) == 0 ) { @@ -510,7 +512,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) imc_error( ic, "Session terminated by remote server (reason unknown)" ); } - imc_logout( ic ); + imc_logout( ic, allow_reconnect ); return( 0 ); } else if( strcmp( cmd[0], "REA" ) == 0 ) @@ -518,11 +520,11 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( num_parts != 5 ) { imc_error( ic, "Syntax error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } - if( g_strcasecmp( cmd[3], ic->username ) == 0 ) + if( g_strcasecmp( cmd[3], ic->acc->user ) == 0 ) { set_t *s; @@ -552,7 +554,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( md->handler->msglen <= 0 ) { imc_error( ic, "Syntax error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } } @@ -565,7 +567,7 @@ static int msn_ns_command( gpointer data, char **cmd, int num_parts ) if( err->flags & STATUS_FATAL ) { - imc_logout( ic ); + imc_logout( ic, TRUE ); return( 0 ); } } @@ -672,7 +674,7 @@ static void msn_auth_got_passport_id( struct passport_reply *rep ) { imc_error( ic, "Error during Passport authentication (%s)", rep->error_string ? rep->error_string : "Unknown error" ); - imc_logout( ic ); + imc_logout( ic, TRUE ); } else { |