<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.darenet.org/skins/common/feed.css?12"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.darenet.org/index.php?action=history&amp;feed=atom&amp;title=overview.u2.9</id>
		<title>overview.u2.9 - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.darenet.org/index.php?action=history&amp;feed=atom&amp;title=overview.u2.9"/>
		<link rel="alternate" type="text/html" href="http://wiki.darenet.org/index.php?title=overview.u2.9&amp;action=history"/>
		<updated>2026-04-05T19:36:31Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.15.1</generator>

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

	</feed>