]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/irc-op.c
- bei INVITE wurde im Antwort-Status-Code das falsche Prefix verschickt.
[ngircd-alex.git] / src / ngircd / irc-op.c
index 77f7a81984c3defe315bdcb1f5e160955d256d39..83f8aad42f081aa19ba5226daaea5a9fea2376ab 100644 (file)
@@ -9,7 +9,7 @@
  * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
  * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
  *
- * $Id: irc-op.c,v 1.3 2002/06/02 15:23:46 alex Exp $
+ * $Id: irc-op.c,v 1.7 2002/07/25 11:36:16 alex Exp $
  *
  * irc-op.c: Befehle zur Channel-Verwaltung
  */
@@ -101,7 +101,7 @@ IRC_INVITE( CLIENT *Client, REQUEST *Req )
        
        /* User suchen */
        target = Client_Search( Req->argv[0] );
-       if( ! target ) return IRC_WriteStrClient( from, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->argv[0] );
+       if(( ! target ) || ( Client_Type( target ) != CLIENT_USER )) return IRC_WriteStrClient( from, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->argv[0] );
 
        chan = Channel_Search( Req->argv[1] );
 
@@ -124,13 +124,18 @@ IRC_INVITE( CLIENT *Client, REQUEST *Req )
        }
 
        Log( LOG_DEBUG, "User \"%s\" invites \"%s\" to \"%s\" ...", Client_Mask( from ), Req->argv[0], Req->argv[1] );
+       if( remember )
+       {
+               if( ! Lists_AddInvited( Client_Mask( target ), chan, TRUE )) return CONNECTED;
+       }
+       
+       /* an Ziel-Client forwarden ... */
        IRC_WriteStrClientPrefix( target, from, "INVITE %s %s", Req->argv[0], Req->argv[1] );
-       if( remember ) Lists_AddInvited( Client_Mask( target ), chan );
 
        if( Client_Conn( target ) > NONE )
        {
-               /* lokaler Zeil-Client, Status-Code melden */
-               if( ! IRC_WriteStrClientPrefix( from, from, RPL_INVITING_MSG, Client_ID( from ), Req->argv[0], Req->argv[1] )) return DISCONNECTED;
+               /* lokaler Ziel-Client, Status-Code melden */
+               if( ! IRC_WriteStrClientPrefix( from, target, RPL_INVITING_MSG, Client_ID( from ), Req->argv[0], Req->argv[1] )) return DISCONNECTED;
        }
        
        return CONNECTED;