mirror of
https://github.com/osmarks/ngircd.git
synced 2024-12-04 22:19:57 +00:00
Don't send invalid CHANINFO commands when no key is set
It can happen that a channel is +k, but no key is set: for example by misconfiguring a pre-defined channel. In this case, ngIRCd sent an invalud CHANINFO command ("CHANINFO #test +Pk 0 :'", note the unset key represented by the two spaces) to its peers. Fix this and enhance the CHANINFO documentation.
This commit is contained in:
parent
b003d469f1
commit
07cb8ed9ae
@ -874,6 +874,10 @@ Server Protocol Commands
|
|||||||
CHANINFO is used by servers to inform each other about a channel:
|
CHANINFO is used by servers to inform each other about a channel:
|
||||||
its modes, channel key, user limits and its topic.
|
its modes, channel key, user limits and its topic.
|
||||||
.
|
.
|
||||||
|
Note: even when <modes> don't include "k" (key) or "l" (limit), both
|
||||||
|
parameters must be given when used; use "*" for "no key" and 0 for
|
||||||
|
"no limit" for the unused parameter in this case.
|
||||||
|
.
|
||||||
The CHANINFO command is allowed on server-links only.
|
The CHANINFO command is allowed on server-links only.
|
||||||
|
|
||||||
References:
|
References:
|
||||||
|
@ -214,7 +214,7 @@ Synchronize_Lists(CLIENT * Client)
|
|||||||
static bool
|
static bool
|
||||||
Send_CHANINFO(CLIENT * Client, CHANNEL * Chan)
|
Send_CHANINFO(CLIENT * Client, CHANNEL * Chan)
|
||||||
{
|
{
|
||||||
char *modes, *topic;
|
char *modes, *topic, *key;
|
||||||
bool has_k, has_l;
|
bool has_k, has_l;
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@ -243,9 +243,10 @@ Send_CHANINFO(CLIENT * Client, CHANNEL * Chan)
|
|||||||
Channel_Name(Chan), modes, topic);
|
Channel_Name(Chan), modes, topic);
|
||||||
}
|
}
|
||||||
/* "CHANINFO <chan> +<modes> <key> <limit> :<topic>" */
|
/* "CHANINFO <chan> +<modes> <key> <limit> :<topic>" */
|
||||||
|
key = Channel_Key(Chan);
|
||||||
return IRC_WriteStrClient(Client, "CHANINFO %s +%s %s %lu :%s",
|
return IRC_WriteStrClient(Client, "CHANINFO %s +%s %s %lu :%s",
|
||||||
Channel_Name(Chan), modes,
|
Channel_Name(Chan), modes,
|
||||||
has_k ? Channel_Key(Chan) : "*",
|
has_k ? (key && *key ? key : "*") : "*",
|
||||||
has_l ? Channel_MaxUsers(Chan) : 0, topic);
|
has_l ? Channel_MaxUsers(Chan) : 0, topic);
|
||||||
} /* Send_CHANINFO */
|
} /* Send_CHANINFO */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user