diff options
| -rw-r--r-- | doc/Commands.txt | 4 | ||||
| -rw-r--r-- | src/ngircd/numeric.c | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/doc/Commands.txt b/doc/Commands.txt index 0accc5c2..0ca8703c 100644 --- a/doc/Commands.txt +++ b/doc/Commands.txt @@ -874,6 +874,10 @@ Server Protocol Commands CHANINFO is used by servers to inform each other about a channel: 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. References: diff --git a/src/ngircd/numeric.c b/src/ngircd/numeric.c index 380b9078..8edb76e2 100644 --- a/src/ngircd/numeric.c +++ b/src/ngircd/numeric.c @@ -214,7 +214,7 @@ Synchronize_Lists(CLIENT * Client) static bool Send_CHANINFO(CLIENT * Client, CHANNEL * Chan) { - char *modes, *topic; + char *modes, *topic, *key; bool has_k, has_l; #ifdef DEBUG @@ -243,9 +243,10 @@ Send_CHANINFO(CLIENT * Client, CHANNEL * Chan) Channel_Name(Chan), modes, topic); } /* "CHANINFO <chan> +<modes> <key> <limit> :<topic>" */ + key = Channel_Key(Chan); return IRC_WriteStrClient(Client, "CHANINFO %s +%s %s %lu :%s", Channel_Name(Chan), modes, - has_k ? Channel_Key(Chan) : "*", + has_k ? (key && *key ? key : "*") : "*", has_l ? Channel_MaxUsers(Chan) : 0, topic); } /* Send_CHANINFO */ |