Commit Diff


commit - 2b6309719f5d2952feb81f40de2e4b32b2c00af2
commit + 802a17b11deea252106ee9c43ea3566c78ccd0ed
blob - 966f0cc2c822cb19b66f5a259016ffea6124e866
blob + 0b2ea10c70aa054d979d55f9dd19d6ca1ea85890
--- src/ngircd/irc-mode.c
+++ src/ngircd/irc-mode.c
@@ -9,14 +9,16 @@
  * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
  * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
  *
- * $Id: irc-mode.c,v 1.1 2002/02/27 23:26:21 alex Exp $
+ * $Id: irc-mode.c,v 1.2 2002/03/04 01:06:24 alex Exp $
  *
  * irc-mode.c: IRC-Befehle zur Mode-Aenderung (MODE, AWAY, ...)
  *
  * $Log: irc-mode.c,v $
+ * Revision 1.2  2002/03/04 01:06:24  alex
+ * - der AWAY-Mode wurde nicht ueber mehrere Server-Links weitergegeben.
+ *
  * Revision 1.1  2002/02/27 23:26:21  alex
  * - Modul aus irc.c bzw. irc.h ausgegliedert.
- *
  */
 
 
@@ -132,14 +134,6 @@ GLOBAL BOOLEAN IRC_MODE( CLIENT *Client, REQUEST *Req 
 			/* Befehl kommt von einem Server, daher
 			 * trauen wir ihm "unbesehen" ... */
 			x[0] = *mode_ptr;
-
-			if(( cl ) && ( x[0] == 'a' ))
-			{
-				/* away */
-				if( set ) Client_SetAway( cl, "Away" );
-				else Client_SetAway( cl, NULL );
-			}
-			
 		}
 		else
 		{
@@ -257,12 +251,21 @@ GLOBAL BOOLEAN IRC_MODE( CLIENT *Client, REQUEST *Req 
 			{
 				/* Mode setzen. Wenn der Client ihn noch nicht hatte: merken */
 				if( Client_ModeAdd( cl, x[0] )) strcat( the_modes, x );
+				
 			}
 			else
 			{
 				/* Modes geloescht. Wenn der Client ihn hatte: merken */
 				if( Client_ModeDel( cl, x[0] )) strcat( the_modes, x );
 			}
+
+			/* "nachbearbeiten" */
+			if( x[0] == 'a' )
+			{
+				/* away */
+				if( set ) Client_SetAway( cl, DEFAULT_AWAY_MSG );
+				else Client_SetAway( cl, NULL );
+			}
 		}
 		if( chan )
 		{