+2005-07-11 Michael Poole <mdpoole@troilus.org>
+
+ * doc/readme.features: Document FEAT_CHANNELLEN.
+
+ * doc/example.conf: Give an example of it.
+
+ * ircd/m_join.c (ms_join): Do not clean channel names from remote
+ servers, to avoid desynchs.
+
+ * ircd/m_names.c (ms_names): Likewise.
+
+2005-07-11 Stephan Peijnik <speijnik@gmail.com>
+
+ * include/ircd_features.h: Declare new FEAT_CHANNELLEN.
+
+ * include/supported.h: Add it to the ISUPPORT display.
+
+ * ircd/channel.c (clean_channelname): Impose the lower limit
+ between FEAT_CHANNELLEN and CHANNELLEN.
+
+ * ircd/ircd_features.c: Define FEAT_CHANNELLEN.
+
2005-07-11 Reed Loden <reed@reedloden.com>
* include/sys.h: Move FD_SETSIZE redefinition to engine_select.c.
# "IPCHECK_CLONE_LIMIT" = "4";
# "IPCHECK_CLONE_PERIOD" = "40";
# "IPCHECK_CLONE_DELAY" = "600";
+# "CHANNELLEN" = "200";
# "CONFIG_OPERCMDS" = "FALSE";
# "OPLEVELS" = "TRUE";
# "LOCAL_CHANNELS" = "TRUE";
If set, send the current topic value and timestamp for channels during
burst. This generally only makes sense for hubs to use, and it causes
a large increase in net.burst size.
+
+CHANNELLEN
+ * Type: integer
+ * Default: 200
+
+This is the allowed length of locally created channels. It may not be
+larger than the CHANNELLEN #define. Like the NICKLEN feature, this is
+intended to ease changes in channel name length across a network.
FEAT_IPCHECK_CLONE_LIMIT,
FEAT_IPCHECK_CLONE_PERIOD,
FEAT_IPCHECK_CLONE_DELAY,
+ FEAT_CHANNELLEN,
/* Some misc. default paths */
FEAT_MPATH,
" TOPICLEN=%i" \
" AWAYLEN=%i" \
" KICKLEN=%i" \
- " CHANNELLEN=%i"
+ " CHANNELLEN=%i" \
+ " MAXCHANNELLEN=%i"
#define FEATURES2 "CHANTYPES=%s" \
" PREFIX=%s" \
#define FEATURESVALUES1 feature_int(FEAT_MAXSILES), MAXMODEPARAMS, \
feature_int(FEAT_MAXCHANNELSPERUSER), \
feature_int(FEAT_MAXBANS), feature_int(FEAT_NICKLEN), \
- NICKLEN, TOPICLEN, AWAYLEN, TOPICLEN, CHANNELLEN
+ NICKLEN, TOPICLEN, AWAYLEN, TOPICLEN, \
+ feature_int(FEAT_CHANNELLEN), CHANNELLEN
#define FEATURESVALUES2 (feature_bool(FEAT_LOCAL_CHANNELS) ? "#&" : "#"), "(ov)@+", "@+", \
(feature_bool(FEAT_OPLEVELS) ? "b,AkU,l,imnpstrD" : "b,k,l,imnpstrD"), \
int i;
for (i = 0; cn[i]; i++) {
- if (i >= CHANNELLEN || !IsChannelChar(cn[i])) {
+ if (i >= IRCD_MIN(CHANNELLEN, feature_int(FEAT_CHANNELLEN))
+ || !IsChannelChar(cn[i])) {
cn[i] = '\0';
return;
}
F_I(IPCHECK_CLONE_LIMIT, 0, 4, 0),
F_I(IPCHECK_CLONE_PERIOD, 0, 40, 0),
F_I(IPCHECK_CLONE_DELAY, 0, 600, 0),
+ F_I(CHANNELLEN, 0, 200, 0),
/* Some misc. default paths */
F_S(MPATH, FEAT_CASE | FEAT_MYOPER, "ircd.motd", motd_init),
for (name = ircd_strtok(&p, chanlist, ","); name;
name = ircd_strtok(&p, 0, ",")) {
- clean_channelname(name);
if (join0(&join, cptr, sptr, name)) /* did client do a JOIN 0? */
continue;
* (As performed with each /join) - ** High frequency usage **
*/
- clean_channelname(para);
chptr = FindChannel(para);
if (chptr) {