ircu2.10.12 pk910 fork
[ircu2.10.12-pk.git] / doc / history / overview.u2.9
1 Hi fellow undernetters,
2
3 I forgot if it was requested on routing-com or here, but you won't see me
4 cross posting, so I did choose 'wastelanders'.
5
6 The request was to mail an overview of the changes 2.8 ==> u2.9,
7 especially for the new Opers, but also as a reminder for others.
8
9 The patch file from irc2.8.21.mu3.1 to ircu2.9.17.mu is 446652 bytes.
10 So you will understand I can't cover every little change.
11
12 New commands
13 ------------
14
15 /UPING <server.to> [<port>] [<server.from>] [<number of packets>]
16
17 Sends <number of packets> (default 5, max 20) size 1024 bytes, from (remote)
18 server <server.from> (default local server) to <server.to>. The default
19 port is 7007 and the same on all servers. If a server is down, you can
20 still use port 7 (echo). Also 2.8 echo's, on port PORTNUM (config.h).
21 UPING uses udp, you need CN lines (masks as server names are allowed) but
22 the connection doesn't have to exist already.
23
24 /RPING <server.to> [<server.from>] [<Optional remark>]
25
26 Sends one 'RPING' message using the irc protocol over an existing link.
27 It allows to measure the lag of remote links, respons is in ms accuracy.
28 The <Optional remark> can be used to measure to total pingtime to your
29 client (like the CTCP PING) or to add a serial number for automation.
30
31 /MAP [server.mask]
32
33 Shows a map in the layout as Router.
34
35 /SETTIME
36
37 Only for debugging, isn't needed. (Oper only).
38
39 Changed commands
40 ----------------
41
42 /CONNECT
43
44 No doubt the biggest impact of 2.9 is on connecting:
45 When the link is physically possible, your /connect ALWAYS succeeds
46 except 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
48 restriction is that you are not allowed to make deliberately a loop:
49 you must first squit. Loops only happen when to connects are done
50 simultaneously and the SERVER messages had not yet time to propagate
51 over the whole net.
52 When a connect (manual or automatically) is done for a link that used
53 to get "server exists", with 2.9 the Ghost is squitted off the net,
54 making it possible to recover faster from breaks caused by bad links.
55 If on the other hand a loop occurs because two parts connect at two
56 points, the servers that detect the server nick collision will squit
57 the most logical link to break the loop, and only one link. This results
58 thus in a connected net one way or the other (for this all 2.8 servers need
59 to be off the net! Till that time the net will connect and then break
60 at two places, giving more messages then right now with only 2.8).
61 2.9 servers also notify the Opers (or users with +s) about net.junctions
62 and net.breaks. It does this even better then Router: A lot faster, always
63 correct (REAL junctions), and independent of Router: You will also see
64 them when Router is 'on the other side'.
65
66 /TIME
67
68 Has changed. Now also shows the system clock / TimeStamp clock offset.
69
70 /MODE +b
71
72 You only have to be joined, not be chan op anymore.
73
74 /MODE <nick> +d
75
76 Makes the user 'Deaf'. Needed for the channel registration service.
77 Channel messages are not routed to a Deaf person decreasing bandwidth use.
78
79 /LINKS
80
81 Output also shows used protocol for that link.
82
83 New numerics
84 ------------
85
86 RPL_MAP, RPL_MAPMORE, RPL_MAPEND and RPL_TRACEPING.
87
88 Bug 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
100 Significant Patches
101 -------------------
102
103 The following patches have been the objective. To realize them I needed to
104 rewrite and change huge other parts of the code also, because lot of the code
105 in 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
144 Other 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
177 Package 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
190 Summary
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
205 Run
206