Rip out clean_channelname() and reject invalid names where appropriate.
[ircu2.10.12-pk.git] / ircd / m_join.c
index 39194b0641285bd37b1a779373afea927673a895..2a58a37fa1aa423432400203e614bafee6982b36 100644 (file)
@@ -131,8 +131,11 @@ int m_join(struct Client *cptr, struct Client *sptr, int parc, char *parv[])
         && (keys = strchr(key = keys, ',')))
       *keys++ = '\0';
 
-    clean_channelname(name);
-    if (!IsChannelName(name))
+    /* Empty keys are the same as no keys. */
+    if (key && !key[0])
+      key = 0;
+
+    if (!IsChannelName(name) || !strIsIrcCh(name))
     {
       /* bad channel name */
       send_reply(sptr, ERR_NOSUCHCHANNEL, name);