]> jfr.im git - irc/quakenet/snircd.git/blame - doc/history/overview.u2.9
Merged revisions 59-76 via svnmerge from
[irc/quakenet/snircd.git] / doc / history / overview.u2.9
CommitLineData
189935b1 1Hi fellow undernetters,
2
3I forgot if it was requested on routing-com or here, but you won't see me
4cross posting, so I did choose 'wastelanders'.
5
6The request was to mail an overview of the changes 2.8 ==> u2.9,
7especially for the new Opers, but also as a reminder for others.
8
9The patch file from irc2.8.21.mu3.1 to ircu2.9.17.mu is 446652 bytes.
10So you will understand I can't cover every little change.
11
12New commands
13------------
14
15/UPING <server.to> [<port>] [<server.from>] [<number of packets>]
16
17Sends <number of packets> (default 5, max 20) size 1024 bytes, from (remote)
18server <server.from> (default local server) to <server.to>. The default
19port is 7007 and the same on all servers. If a server is down, you can
20still use port 7 (echo). Also 2.8 echo's, on port PORTNUM (config.h).
21UPING uses udp, you need CN lines (masks as server names are allowed) but
22the connection doesn't have to exist already.
23
24/RPING <server.to> [<server.from>] [<Optional remark>]
25
26Sends one 'RPING' message using the irc protocol over an existing link.
27It allows to measure the lag of remote links, respons is in ms accuracy.
28The <Optional remark> can be used to measure to total pingtime to your
29client (like the CTCP PING) or to add a serial number for automation.
30
31/MAP [server.mask]
32
33Shows a map in the layout as Router.
34
35/SETTIME
36
37Only for debugging, isn't needed. (Oper only).
38
39Changed commands
40----------------
41
42/CONNECT
43
44No doubt the biggest impact of 2.9 is on connecting:
45When the link is physically possible, your /connect ALWAYS succeeds
46except when an H: or L: line somewhere on the net forbids it, or when
47*after* your connect another connect is done that cause a loop. The only
48restriction is that you are not allowed to make deliberately a loop:
49you must first squit. Loops only happen when to connects are done
50simultaneously and the SERVER messages had not yet time to propagate
51over the whole net.
52When a connect (manual or automatically) is done for a link that used
53to get "server exists", with 2.9 the Ghost is squitted off the net,
54making it possible to recover faster from breaks caused by bad links.
55If on the other hand a loop occurs because two parts connect at two
56points, the servers that detect the server nick collision will squit
57the most logical link to break the loop, and only one link. This results
58thus in a connected net one way or the other (for this all 2.8 servers need
59to be off the net! Till that time the net will connect and then break
60at two places, giving more messages then right now with only 2.8).
612.9 servers also notify the Opers (or users with +s) about net.junctions
62and net.breaks. It does this even better then Router: A lot faster, always
63correct (REAL junctions), and independent of Router: You will also see
64them when Router is 'on the other side'.
65
66/TIME
67
68Has changed. Now also shows the system clock / TimeStamp clock offset.
69
70/MODE +b
71
72You only have to be joined, not be chan op anymore.
73
74/MODE <nick> +d
75
76Makes the user 'Deaf'. Needed for the channel registration service.
77Channel messages are not routed to a Deaf person decreasing bandwidth use.
78
79/LINKS
80
81Output also shows used protocol for that link.
82
83New numerics
84------------
85
86RPL_MAP, RPL_MAPMORE, RPL_MAPEND and RPL_TRACEPING.
87
88Bug fixes
89---------
90
91- A handshaking link doesn't pingtime out; That can interfere with
92 slow nameserver lookups.
93
94- U: lines (and K: lines) now active directly after a /rehash
95
96- Don't bind() a socket before connect(), thats useless on machines
97 with just one ip number (like we all have), and can confuse
98 some OS's I found out.
99
100Significant Patches
101-------------------
102
103The following patches have been the objective. To realize them I needed to
104rewrite and change huge other parts of the code also, because lot of the code
105in 2.8 is under great tension of re-re-re-patches.
106
107- Rewrote m_server. Objective:
108 = Allow ghosted servers to reconnect (solution "server exists").
109 To allow for this:
110 - Added a timestamp to SQUIT, this timestamp functions as a label
111 which matches the corresponding SERVER (connect).
112 - Added a prefix for every message, absolutely necessary to keep track
113 of the correct order (direction actually).
114
115- The oci has been added (oper sees invisibles on own server).
116
117- A new NOTE is added, many bugs removed and extremely speeded up due to
118 a better interface with the rest of the code.
119
120- The TimeStamp clocks are now automatically synchronized, so a wrong
121 system clock isn't a problem anymore.
122
123- Added a Protocol-version and detection. This allows protocol changes
124 with a *MUCH* higher backwards compatibility.
125
126- Server now keeps track of the server map. This allowed for /MAP and
127 a lot of speed ups (don't have to scan through all clients to find a
128 server) but much more important: The disconnect burst could be brought
129 back to ONE message (instead of a QUIT for ever single client).
130 Apart from decreasing bandwidth use, this was necessary for other
131 important protocol changes, and even more to allow important future
132 changes that will reduce the connect.burst as well. The most important
133 current impact is that it allows SQUIT to travel down stream AND up stream.
134 Because directionless messages can loose the order, the timestamp on
135 SQUIT was needed to check the validity.
136
137- In the client structure a pointer to the server structure is used
138 rather then the full servername, using less memory AND speeding up
139 several places because you don't need to lookup the servername
140 anymore.
141
142- USER removed from the connect burst (now all in NICK).
143
144Other patches
145-------------
146
147- exit_client() is rewritten.
148 Added are exit_client_msg() and exit_new_server().
149 This has especially impact on the possibilities within the protocol.
150 The old exit_client() was clumsy and therefor already used in an incorrect
151 way at several places. The kludges around this part of the code made it
152 impossible to make any changes without breaking something else. Only after
153 the rewrite it was possible to make changes described else where.
154 This also allowed to improve the error message handling to the point that
155 Opers see *always* the error messages involved with routing (also those
156 from remote /connects, delayed errors and squit reasons 'from the other
157 side').
158
159- send.c is more or less rewritten. varargs are fixed now and send.c is
160 highly optimized for speed (possible because of new internal server map).
161
162- All useable dog3 code speed ups have been added.
163 These include:
164 - Added a head pointer in the dyn buffer.
165 - several code optimisations
166 - continious kill line checking removed (I added the check at
167 the place where it belongs: after a /rehash).
168
169- Useable patches from dl:
170 - Stop as much as possible flooding from unregistered connections.
171 - VERSION and ADMIN available for unregistered users.
172 - syslog (if defined) KILLs of local clients.
173
174- Many compile warnings have been removed. Also a special fix for DYNIX to
175 make UPING/RPING also work there (needed gettimeofday()).
176
177Package changes
178---------------
179
180- The irc client is removed from the package as are several old files with
181 incorrect old useless info (Like 'WHATSNEW', ChangeLog that stopped at 1992).
182- A Makefile.dist is added.
183- Slighty changed doc/Manual
184- New doc/NOTE manual
185- NO_DEFAULT_INVISIBLE removed; users are always visible by default.
186- Last but not least: patchlevel.h is rewritten so any additional patch
187 can do the version update itself, without interfering: No need to edit
188 this by hand anymore.
189
190Summary
191=======
192
193- Less memory usage
194- Speeded up code
195- Less bandwidth use, especially disconnect burst
196- "Server exists" solved
197- Error messages concerning (remote) /connects now always visible.
198- New tools to do (remote) link testing
199- Intelligent and improved SQUIT handling, should stop unwanted breaks.
200- squits comments visible everywhere.
201- net.junction and net.break notices
202- Overall protocol streamlining allowing for future improvements
203 of the protocol.
204
205Run
206