207 lines
7.8 KiB
Groff
207 lines
7.8 KiB
Groff
Hi fellow undernetters,
|
|
|
|
I forgot if it was requested on routing-com or here, but you won't see me
|
|
cross posting, so I did choose 'wastelanders'.
|
|
|
|
The request was to mail an overview of the changes 2.8 ==> u2.9,
|
|
especially for the new Opers, but also as a reminder for others.
|
|
|
|
The patch file from irc2.8.21.mu3.1 to ircu2.9.17.mu is 446652 bytes.
|
|
So you will understand I can't cover every little change.
|
|
|
|
New commands
|
|
------------
|
|
|
|
/UPING <server.to> [<port>] [<server.from>] [<number of packets>]
|
|
|
|
Sends <number of packets> (default 5, max 20) size 1024 bytes, from (remote)
|
|
server <server.from> (default local server) to <server.to>. The default
|
|
port is 7007 and the same on all servers. If a server is down, you can
|
|
still use port 7 (echo). Also 2.8 echo's, on port PORTNUM (config.h).
|
|
UPING uses udp, you need CN lines (masks as server names are allowed) but
|
|
the connection doesn't have to exist already.
|
|
|
|
/RPING <server.to> [<server.from>] [<Optional remark>]
|
|
|
|
Sends one 'RPING' message using the irc protocol over an existing link.
|
|
It allows to measure the lag of remote links, respons is in ms accuracy.
|
|
The <Optional remark> can be used to measure to total pingtime to your
|
|
client (like the CTCP PING) or to add a serial number for automation.
|
|
|
|
/MAP [server.mask]
|
|
|
|
Shows a map in the layout as Router.
|
|
|
|
/SETTIME
|
|
|
|
Only for debugging, isn't needed. (Oper only).
|
|
|
|
Changed commands
|
|
----------------
|
|
|
|
/CONNECT
|
|
|
|
No doubt the biggest impact of 2.9 is on connecting:
|
|
When the link is physically possible, your /connect ALWAYS succeeds
|
|
except when an H: or L: line somewhere on the net forbids it, or when
|
|
*after* your connect another connect is done that cause a loop. The only
|
|
restriction is that you are not allowed to make deliberately a loop:
|
|
you must first squit. Loops only happen when to connects are done
|
|
simultaneously and the SERVER messages had not yet time to propagate
|
|
over the whole net.
|
|
When a connect (manual or automatically) is done for a link that used
|
|
to get "server exists", with 2.9 the Ghost is squitted off the net,
|
|
making it possible to recover faster from breaks caused by bad links.
|
|
If on the other hand a loop occurs because two parts connect at two
|
|
points, the servers that detect the server nick collision will squit
|
|
the most logical link to break the loop, and only one link. This results
|
|
thus in a connected net one way or the other (for this all 2.8 servers need
|
|
to be off the net! Till that time the net will connect and then break
|
|
at two places, giving more messages then right now with only 2.8).
|
|
2.9 servers also notify the Opers (or users with +s) about net.junctions
|
|
and net.breaks. It does this even better then Router: A lot faster, always
|
|
correct (REAL junctions), and independent of Router: You will also see
|
|
them when Router is 'on the other side'.
|
|
|
|
/TIME
|
|
|
|
Has changed. Now also shows the system clock / TimeStamp clock offset.
|
|
|
|
/MODE +b
|
|
|
|
You only have to be joined, not be chan op anymore.
|
|
|
|
/MODE <nick> +d
|
|
|
|
Makes the user 'Deaf'. Needed for the channel registration service.
|
|
Channel messages are not routed to a Deaf person decreasing bandwidth use.
|
|
|
|
/LINKS
|
|
|
|
Output also shows used protocol for that link.
|
|
|
|
New numerics
|
|
------------
|
|
|
|
RPL_MAP, RPL_MAPMORE, RPL_MAPEND and RPL_TRACEPING.
|
|
|
|
Bug fixes
|
|
---------
|
|
|
|
- A handshaking link doesn't pingtime out; That can interfere with
|
|
slow nameserver lookups.
|
|
|
|
- U: lines (and K: lines) now active directly after a /rehash
|
|
|
|
- Don't bind() a socket before connect(), thats useless on machines
|
|
with just one ip number (like we all have), and can confuse
|
|
some OS's I found out.
|
|
|
|
Significant Patches
|
|
-------------------
|
|
|
|
The following patches have been the objective. To realize them I needed to
|
|
rewrite and change huge other parts of the code also, because lot of the code
|
|
in 2.8 is under great tension of re-re-re-patches.
|
|
|
|
- Rewrote m_server. Objective:
|
|
= Allow ghosted servers to reconnect (solution "server exists").
|
|
To allow for this:
|
|
- Added a timestamp to SQUIT, this timestamp functions as a label
|
|
which matches the corresponding SERVER (connect).
|
|
- Added a prefix for every message, absolutely necessary to keep track
|
|
of the correct order (direction actually).
|
|
|
|
- The oci has been added (oper sees invisibles on own server).
|
|
|
|
- A new NOTE is added, many bugs removed and extremely speeded up due to
|
|
a better interface with the rest of the code.
|
|
|
|
- The TimeStamp clocks are now automatically synchronized, so a wrong
|
|
system clock isn't a problem anymore.
|
|
|
|
- Added a Protocol-version and detection. This allows protocol changes
|
|
with a *MUCH* higher backwards compatibility.
|
|
|
|
- Server now keeps track of the server map. This allowed for /MAP and
|
|
a lot of speed ups (don't have to scan through all clients to find a
|
|
server) but much more important: The disconnect burst could be brought
|
|
back to ONE message (instead of a QUIT for ever single client).
|
|
Apart from decreasing bandwidth use, this was necessary for other
|
|
important protocol changes, and even more to allow important future
|
|
changes that will reduce the connect.burst as well. The most important
|
|
current impact is that it allows SQUIT to travel down stream AND up stream.
|
|
Because directionless messages can loose the order, the timestamp on
|
|
SQUIT was needed to check the validity.
|
|
|
|
- In the client structure a pointer to the server structure is used
|
|
rather then the full servername, using less memory AND speeding up
|
|
several places because you don't need to lookup the servername
|
|
anymore.
|
|
|
|
- USER removed from the connect burst (now all in NICK).
|
|
|
|
Other patches
|
|
-------------
|
|
|
|
- exit_client() is rewritten.
|
|
Added are exit_client_msg() and exit_new_server().
|
|
This has especially impact on the possibilities within the protocol.
|
|
The old exit_client() was clumsy and therefor already used in an incorrect
|
|
way at several places. The kludges around this part of the code made it
|
|
impossible to make any changes without breaking something else. Only after
|
|
the rewrite it was possible to make changes described else where.
|
|
This also allowed to improve the error message handling to the point that
|
|
Opers see *always* the error messages involved with routing (also those
|
|
from remote /connects, delayed errors and squit reasons 'from the other
|
|
side').
|
|
|
|
- send.c is more or less rewritten. varargs are fixed now and send.c is
|
|
highly optimized for speed (possible because of new internal server map).
|
|
|
|
- All useable dog3 code speed ups have been added.
|
|
These include:
|
|
- Added a head pointer in the dyn buffer.
|
|
- several code optimisations
|
|
- continious kill line checking removed (I added the check at
|
|
the place where it belongs: after a /rehash).
|
|
|
|
- Useable patches from dl:
|
|
- Stop as much as possible flooding from unregistered connections.
|
|
- VERSION and ADMIN available for unregistered users.
|
|
- syslog (if defined) KILLs of local clients.
|
|
|
|
- Many compile warnings have been removed. Also a special fix for DYNIX to
|
|
make UPING/RPING also work there (needed gettimeofday()).
|
|
|
|
Package changes
|
|
---------------
|
|
|
|
- The irc client is removed from the package as are several old files with
|
|
incorrect old useless info (Like 'WHATSNEW', ChangeLog that stopped at 1992).
|
|
- A Makefile.dist is added.
|
|
- Slighty changed doc/Manual
|
|
- New doc/NOTE manual
|
|
- NO_DEFAULT_INVISIBLE removed; users are always visible by default.
|
|
- Last but not least: patchlevel.h is rewritten so any additional patch
|
|
can do the version update itself, without interfering: No need to edit
|
|
this by hand anymore.
|
|
|
|
Summary
|
|
=======
|
|
|
|
- Less memory usage
|
|
- Speeded up code
|
|
- Less bandwidth use, especially disconnect burst
|
|
- "Server exists" solved
|
|
- Error messages concerning (remote) /connects now always visible.
|
|
- New tools to do (remote) link testing
|
|
- Intelligent and improved SQUIT handling, should stop unwanted breaks.
|
|
- squits comments visible everywhere.
|
|
- net.junction and net.break notices
|
|
- Overall protocol streamlining allowing for future improvements
|
|
of the protocol.
|
|
|
|
Run
|
|
|