Skip to content

Commit 2613cef

Browse files
Serena Gandum--DiagneSerena Gandum--Diagne
authored andcommitted
kick manage different numbers of users/channels
1 parent a1a58b9 commit 2613cef

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

srcs/kick.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,25 +32,35 @@ void IrcServer::checkKick(std::string _msg, int _pos)
3232
i = 0;
3333
j = 0;
3434

35+
3536
if (!splitKickCommand(_pos, _msg, users, chan))
3637
return ;
3738
while (i < users.size())
3839
{
3940
j = i;
40-
target_user = userExist(users[i]);
41-
target_channel = channelExist(chan[i]);
4241

42+
if (chan.size() > 1 && users.size() > chan.size() && i >= chan.size())
43+
{
44+
i++;
45+
continue;
46+
}
47+
4348
if (chan.size() == 1)
4449
j = 0;
4550

51+
target_user = userExist(users[i]);
52+
target_channel = channelExist(chan[j]);
53+
54+
std::cout << "Delete " + users[i] + " from " + chan[i] + ". i = " << i << ". j = " << j << std::endl;
55+
4656
if (!checkChannelNames(chan[j]))
4757
sendMsg(ERR_BADCHANMASK(chan[j]), fd_sockets[_pos]);
4858
else if (target_user == -1)
4959
sendMsg(ERR_NOSUCHNICK(clients[_pos -1]->getNickname(), users[i]), fd_sockets[_pos]);
5060
else if (target_channel == -1)
5161
sendMsg(ERR_NOSUCHCHANNEL(clients[_pos - 1]->getNickname(), chan[j]), fd_sockets[_pos]);
5262
else if (searchUserInChannel(users[i], chan[j]) == -1)
53-
sendMsg(ERR_NOTONCHANNEL(users[i], channels[target_channel]->getname()), fd_sockets[_pos]);
63+
sendMsg(ERR_NOTONCHANNEL(clients[_pos - 1]->getNickname(), channels[target_channel]->getname()), fd_sockets[_pos]);
5464
else if (!clients[_pos - 1]->operatorOfThisChannel(chan[j]))
5565
sendMsg(ERR_CHANOPRIVSNEEDED(clients[_pos -1]->getNickname(), chan[j]), fd_sockets[_pos]);
5666
else

0 commit comments

Comments
 (0)