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
|
GLOBAL bool
|
||||||
IRC_NJOIN( CLIENT *Client, REQUEST *Req )
|
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;
|
bool is_owner, is_chanadmin, is_op, is_halfop, is_voiced;
|
||||||
CHANNEL *chan;
|
CHANNEL *chan;
|
||||||
CLIENT *c;
|
CLIENT *c;
|
||||||
@ -320,6 +320,27 @@ IRC_NJOIN( CLIENT *Client, REQUEST *Req )
|
|||||||
IRC_WriteStrChannelPrefix(Client, chan, c, false,
|
IRC_WriteStrChannelPrefix(Client, chan, c, false,
|
||||||
"JOIN :%s", channame);
|
"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 */
|
/* Announce "channel user modes" to the channel, if any */
|
||||||
strlcpy(modes, Channel_UserModes(chan, c), sizeof(modes));
|
strlcpy(modes, Channel_UserModes(chan, c), sizeof(modes));
|
||||||
if (modes[0])
|
if (modes[0])
|
||||||
|
Loading…
Reference in New Issue
Block a user