- if( ServerPART ) IRC_WriteStrServersPrefix( Origin, Client, "PART %s :%s", c->name, Reason );
- IRC_WriteStrChannelPrefix( Origin, c, Client, FALSE, "PART %s :%s", c->name, Reason );
- if(( Client_Conn( Origin ) > NONE ) && ( Client_Type( Origin ) == CLIENT_USER )) IRC_WriteStrClientPrefix( Origin, Client, "PART %s :%s", c->name, Reason );
+ switch( Type )
+ {
+ case REMOVE_QUIT:
+ /* QUIT: other servers have already been notified, see Client_Destroy();
+ * so only inform other clients in same channel. */
+ assert( InformServer == false );
+ LogDebug("User \"%s\" left channel \"%s\" (%s).",
+ Client_Mask( Client ), c->name, Reason );
+ break;
+ case REMOVE_KICK:
+ /* User was KICKed: inform other servers and all users in channel */
+ if( InformServer )
+ IRC_WriteStrServersPrefix( Client_NextHop( Origin ),
+ Origin, "KICK %s %s :%s", c->name, Client_ID( Client ), Reason);
+ IRC_WriteStrChannelPrefix(Client, c, Origin, false, "KICK %s %s :%s",
+ c->name, Client_ID( Client ), Reason );
+ if ((Client_Conn(Client) > NONE) &&
+ (Client_Type(Client) == CLIENT_USER))
+ {
+ IRC_WriteStrClientPrefix(Client, Origin, "KICK %s %s :%s",
+ c->name, Client_ID( Client ), Reason);
+ }
+ LogDebug("User \"%s\" has been kicked off \"%s\" by \"%s\": %s.",
+ Client_Mask( Client ), c->name, Client_ID(Origin), Reason);
+ break;
+ default: /* PART */
+ if (InformServer)
+ IRC_WriteStrServersPrefix(Origin, Client, "PART %s :%s", c->name, Reason);
+
+ IRC_WriteStrChannelPrefix(Origin, c, Client, false, "PART %s :%s",
+ c->name, Reason);
+
+ if ((Client_Conn(Origin) > NONE) &&
+ (Client_Type(Origin) == CLIENT_USER))
+ {
+ IRC_WriteStrClientPrefix( Origin, Client, "PART %s :%s", c->name, Reason);
+ LogDebug("User \"%s\" left channel \"%s\" (%s).",
+ Client_Mask(Client), c->name, Reason);
+ }
+ }