Having these throw is terrible for ergonomics and there are loads
of places where the exception was either silently ignored or not
handled at all. Having a function which returns an optional and
another that returns a default works a lot better imo.
This is the new way of sending messages to the uplink inspired by
the work done in the old git master. This will allow us to do new
things involving tags in the future.
This was done with:
find docs/ include/ language/ modules/ src/ *.* Config -exec sed -i 's/-20.. Anope Team/-2017 Anope Team/i' {} \;
Added missing copyright headers to files that didn't have it yet.
find include/ src/ lang/ docs/ modules/ *.* Config -exec sed -i 's/-20.. Anope Team/-2014 Anope Team/i' {} \;
Added missing copyright headers to files that didn't have it yet.
Fixed some whitespace and blank lines along the way.
Use the "server token" parameter of NICK commands to find the host server and
correctly assign the nick name to this server.
This allows Anope to correctly free all nick names again when (remote) servers
leave the network, which fixes arbitrary "KILL attacks" when such nick names
reconnect later on.
Initial debugging and patch by DukePyrolator, thanks a lot!
1. the directly linked server, our upstream, always has token "1", and
2. for remote servers in the network, the token and description filds
were interchanged during registration,
therefore up to now no server could be found by Server::Find() using its
assigned server token.
in memory, which does weird things.
For fun different ircds implement this differently (Unreal compares
timestamps, TS6 compares timestamps and user username/host), and whether
or not we get a kill for our user also varies, so just kill everyone.
This can't really happen anyway with properly set qlines, only if
services haven't yet set the qlines, or possibly in a bot add/nick
user introduce race, or with enforcers, which not many ircds require.