New features in 2.10
Questions and comments about this page should go to the maintainer:
(Run @ IRC).
The net.burst now uses BURST, END_OF_BURST and EOB_ACK. The BURST message
is more compact and packs everything of one channel in one line. The result
is that channel synchronization takes place instantly (joins, deops of
net.riders, new modes, ban correction). After you saw the splitted users
(re)join, you still can't talk to them until all of the net.burst has been
passed through the connecting link back and forwards; this to get rid of
excessive long periods of lag due to a net.junction of a slow link.
Net.riders are not anymore allowed to net.ride an opless channel. This
was decided because most 'nukes' are done in order to be able to net.ride
on an opless channel. The additional advantage is that net.riders can be
de-opped before they even see anyone join. Therefore, independent
of lag, a net.rider will always first be de-opped, and only then see the
returning people join.
Very important: everything is resynchronized now, including
Nicknames (and server names) are now "numeric" (base 64). This has major
advantages concerning the desyncs and should solve all desync problems
that are related to nick changes. It also reduces the size of net.bursts
by 30% ! (especially because the server names are now 1 character). There
is currently only one desync possibility left that we know off, the numeric
nicks solve like 7. Several Ghost bugs have been fixed too as compared
to 2.9 thanks to the use of numeric nicks; these ghosts have been the cause
for a great number of 'HACK' desyncs.
Umode +s works as usual, but also allows to set a mask to personalize the
amount and sort of server notices that is received.
The code is prepared to receive tokenized server-server messages: 1 or
2 characters per command. This again will reduces bandwidth usage.
A new command was added: /WALLCHOPS #channel ..., or /NOTICE @#channel
... which sends a message to all channel ops. This message should be used
instead of the `onotice' scripts used now because the latter could
trigger the anti mass message mechanism (see below). This is the reason
that this new command is available for everyone, also non chan-ops.
Mass messaging and inviting is now throttled after 20 different targets.
Where a target is a channel or a user, not a nick. Throttling doesn't
prohibit talking to any of the previous 20 targets. Replacement of one
any of the 20 targets is allowed every 120 seconds.
/INVITE got a facelift. Among others, you will be able to invite someone
through a ban and give him a +v, as alternative for 'anti-bans'.
All remote commands that would allow to flood the server-server links with
huge queries have been disabled for normal users. To support helpers that
are not IRC Opers, several additions have been made to still allow doing
certain queries - without needing to flood - like using a user@host mask
to lookup (remote) K-lines and the introduction of a separate remote MOTD.
Overlapping bans now remove the redundant ones. For client synchronization,
the redundant ones are still sent as -b modes to the clients (but do not
go over server-server links).
The synchronization of the TS clocks should now be fixed.
Connections from clone botters that use several different servers are also
spotted by the server now (doesn't have to be local anymore). Fast connecting
clones are throttled on IP-number although the server notices DO show the
hostname too now. Problems with getting throttled accidentally may be caused
by the fact that your client retries to connect too fast, use a wait period
of 20 seconds at least. Note that you are allowed to immediately
retry when the connection was refused by the server for a temporal reason,
like "No more connections".
In order to know better when a net.junction is done, two new messages are
added: 'End of net.burst' and '<server> acknowledged end of net.burst'.
This way the Opers can exactly see when a net.junction starts, but also
when it is finished.
In an attempt to further reduce the desyncs, a new server-server message
CREATE is being used to let someone join and give him the initial ops.
The advantage of this is that JOIN and MODE +o plus TimeStamp are now in
one message and can be handled correctly.
Compiling the server with -DGODMODE in the CFLAGS adds the code that I
always used for debugging, it gives a lot of extra information to the +s
user, like the actual server-server messages being transmitted. Unmissable
for development. (Of course, NEVER use this on a production net. It's both
extremely bandwidth consuming as well as spying on ALL messages, secrets
The code got an enormous facelift, all warnings are removed when compiling
with -Wall -pedantic. Function prototypes are now used everywhere. The
headers are organized more professional (still as messy as the source files
are though). The code was run through `indent', so its one programming
style through-out the code now.