mirror of
https://github.com/osmarks/ngircd.git
synced 2024-12-12 01:40:27 +00:00
Send NAMES list and channel topic to NJOIN'ed users
Send the NAMES list and channel topic to users "forcefully" joined to a channel using NJOIN, like they joined on their own using JOIN. Closes #288.
This commit is contained in:
parent
3e23f7d2c3
commit
5ef1a657f4
@ -250,7 +250,7 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
|
||||
GLOBAL bool
|
||||
IRC_NJOIN( CLIENT *Client, REQUEST *Req )
|
||||
{
|
||||
char nick_in[COMMAND_LEN], nick_out[COMMAND_LEN], *channame, *ptr, modes[8];
|
||||
char nick_in[COMMAND_LEN], nick_out[COMMAND_LEN], *channame, *ptr, modes[8], *topic;
|
||||
bool is_owner, is_chanadmin, is_op, is_halfop, is_voiced;
|
||||
CHANNEL *chan;
|
||||
CLIENT *c;
|
||||
@ -320,6 +320,27 @@ IRC_NJOIN( CLIENT *Client, REQUEST *Req )
|
||||
IRC_WriteStrChannelPrefix(Client, chan, c, false,
|
||||
"JOIN :%s", channame);
|
||||
|
||||
/* If the client is connected to me... */
|
||||
if(Client_Conn(c) != NONE) {
|
||||
/* Send NAMES list to the joined user */
|
||||
if(IRC_Send_NAMES(c, chan))
|
||||
IRC_WriteStrClient(c, RPL_ENDOFNAMES_MSG, Client_ID(Client),
|
||||
Channel_Name(chan));
|
||||
|
||||
/* Send topic to the joined user */
|
||||
topic = Channel_Topic(chan);
|
||||
assert(topic != NULL);
|
||||
if (*topic) {
|
||||
IRC_WriteStrClient(c, RPL_TOPIC_MSG, Client_ID(c), channame, topic);
|
||||
#ifndef STRICT_RFC
|
||||
IRC_WriteStrClient(c, RPL_TOPICSETBY_MSG,
|
||||
Client_ID(c), channame,
|
||||
Channel_TopicWho(chan),
|
||||
Channel_TopicTime(chan));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/* Announce "channel user modes" to the channel, if any */
|
||||
strlcpy(modes, Channel_UserModes(chan, c), sizeof(modes));
|
||||
if (modes[0])
|
||||
|
Loading…
Reference in New Issue
Block a user