Index: protocols/msn/ns.c
===================================================================
--- protocols/msn/ns.c	(revision 552e641194147078c7858059df9916d5d548b7a1)
+++ protocols/msn/ns.c	(revision c2fb38096ea4e75a680e57e103d4a4986aa84c75)
@@ -48,5 +48,5 @@
 	{
 		imc_error( ic, "Could not connect to server" );
-		imc_logout( ic );
+		imc_logout( ic, TRUE );
 		return FALSE;
 	}
@@ -90,5 +90,5 @@
 	{
 		imc_error( ic, "Error while reading from server" );
-		imc_logout( ic );
+		imc_logout( ic, TRUE );
 		
 		return FALSE;
@@ -115,10 +115,10 @@
 		{
 			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 ) ) );
 	}
@@ -126,5 +126,5 @@
 	{
 		/* 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 ) ) );
 	}
@@ -144,5 +144,5 @@
 			{
 				imc_error( ic, "Syntax error" );
-				imc_logout( ic );
+				imc_logout( ic, TRUE );
 				return( 0 );
 			}
@@ -163,5 +163,5 @@
 			{
 				imc_error( ic, "Syntax error" );
-				imc_logout( ic );
+				imc_logout( ic, TRUE );
 				return( 0 );
 			}
@@ -173,5 +173,5 @@
 			{
 				imc_error( ic, "Unknown authentication method for switchboard" );
-				imc_logout( ic );
+				imc_logout( ic, TRUE );
 				return( 0 );
 			}
@@ -205,5 +205,5 @@
 		{
 			imc_error( ic, "Syntax error" );
-			imc_logout( ic );
+			imc_logout( ic, TRUE );
 			return( 0 );
 		}
@@ -214,8 +214,8 @@
 		{
 			/* 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 );
 			}
@@ -244,5 +244,5 @@
 		{
 			imc_error( ic, "Unknown authentication type" );
-			imc_logout( ic );
+			imc_logout( ic, FALSE );
 			return( 0 );
 		}
@@ -253,5 +253,5 @@
 		{
 			imc_error( ic, "Syntax error" );
-			imc_logout( ic );
+			imc_logout( ic, TRUE );
 			return( 0 );
 		}
@@ -262,5 +262,5 @@
 		{
 			imc_error( ic, "Syntax error" );
-			imc_logout( ic );
+			imc_logout( ic, TRUE );
 			return( 0 );
 		}
@@ -293,5 +293,5 @@
 		{
 			imc_error( ic, "Syntax error" );
-			imc_logout( ic );
+			imc_logout( ic, TRUE );
 			return( 0 );
 		}
@@ -345,5 +345,5 @@
 		{
 			imc_error( ic, "Syntax error" );
-			imc_logout( ic );
+			imc_logout( ic, TRUE );
 			return( 0 );
 		}
@@ -364,5 +364,5 @@
 		{
 			imc_error( ic, "Syntax error" );
-			imc_logout( ic );
+			imc_logout( ic, TRUE );
 			return( 0 );
 		}
@@ -386,5 +386,5 @@
 		{
 			imc_error( ic, "Syntax error" );
-			imc_logout( ic );
+			imc_logout( ic, TRUE );
 			return( 0 );
 		}
@@ -414,5 +414,5 @@
 		{
 			imc_error( ic, "Syntax error" );
-			imc_logout( ic );
+			imc_logout( ic, TRUE );
 			return( 0 );
 		}
@@ -439,5 +439,5 @@
 		{
 			imc_error( ic, "Syntax error" );
-			imc_logout( ic );
+			imc_logout( ic, TRUE );
 			return( 0 );
 		}
@@ -449,5 +449,5 @@
 		{
 			imc_error( ic, "Syntax error" );
-			imc_logout( ic );
+			imc_logout( ic, TRUE );
 			return( 0 );
 		}
@@ -459,5 +459,5 @@
 		{
 			imc_error( ic, "Unknown authentication method for switchboard" );
-			imc_logout( ic );
+			imc_logout( ic, TRUE );
 			return( 0 );
 		}
@@ -479,5 +479,5 @@
 			{
 				imc_error( ic, "Syntax error" );
-				imc_logout( ic );
+				imc_logout( ic, TRUE );
 				return( 0 );
 			}
@@ -497,8 +497,10 @@
 	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 )
@@ -511,5 +513,5 @@
 		}
 		
-		imc_logout( ic );
+		imc_logout( ic, allow_reconnect );
 		return( 0 );
 	}
@@ -519,9 +521,9 @@
 		{
 			imc_error( ic, "Syntax error" );
-			imc_logout( ic );
-			return( 0 );
-		}
-		
-		if( g_strcasecmp( cmd[3], ic->username ) == 0 )
+			imc_logout( ic, TRUE );
+			return( 0 );
+		}
+		
+		if( g_strcasecmp( cmd[3], ic->acc->user ) == 0 )
 		{
 			set_t *s;
@@ -553,5 +555,5 @@
 		{
 			imc_error( ic, "Syntax error" );
-			imc_logout( ic );
+			imc_logout( ic, TRUE );
 			return( 0 );
 		}
@@ -566,5 +568,5 @@
 		if( err->flags & STATUS_FATAL )
 		{
-			imc_logout( ic );
+			imc_logout( ic, TRUE );
 			return( 0 );
 		}
@@ -673,5 +675,5 @@
 		imc_error( ic, "Error during Passport authentication (%s)",
 		               rep->error_string ? rep->error_string : "Unknown error" );
-		imc_logout( ic );
+		imc_logout( ic, TRUE );
 	}
 	else
