From espel Sat Jan 20 06:57:25 1996 Subject: fix for deop problems with TS To: operlist@kei.com Date: Sat, 20 Jan 1996 06:57:25 +0100 (MET) X-Mailer: ELM [version 2.4 PL24 ME8a] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Length: 3067 Status: O For all of those concerned about the deops happening with the TS servers, there's now an explanation and a fix. After a bit of thinking and experimenting on a test net, slackie figured out what situations could lead to servers deopping users who had been on a channel for long, in a mixed TS/no-TS net. Her explanation: Assume we have 4 servers, A-D, with B-D being TS servers and A being non-TS. 1. squit all servers 2. have users on servers A, C and D join channel #blah. Have the users on server A join it first, then D, then C. 3. connect servers A and B. Since A is a non-TS server, B will set the TS for #blah to 0 4. connect servers B and C. Since the TS for #blah on B is 0, #blah will adopt the TS that server C has set. 5. connect server D to server B or C. Since the TS on this server is oldest, users on all other servers will be deopped. What happens is that users are joining TS leaf servers, causing a new TS to be set for #blah. When the leaf with the newer TS connects to the server with the TS of 0 (which was set to 0 because the ops were propagated from non-TS servers), both servers accept the TS of the leaf. When the leaf with the older TS connects to the another TS server, all other ops on #blah are deopped. This has nothing to do with clocks; if that was the problem it would be obvious b/c it would be one server in particular doing it over and over again, which it isn't. When TS's are being compared, they are typically much more different than whatever clock drift one could expect even counting with a few seconds of lag when synchronizing, so this shouldn't be a problem. To fix this, servers need to be less aggresive in setting non-0 values for channels when part of the net doesn't do TS. The only way to completely prevent these deops is to make it so that when two TS servers, both with ops, and one with a non-0 TS and the other with 0 are exchanging information about a channel, they should set the TS to 0 on both servers rather than both taking the non-0 value. This also means that on a mixed net channels will only gain and keep a non-0 TS when re-created; hacking ops from a TS server will no longer be enough. I've written a patch that makes TSora servers behave this way; the patch can be applied directly to +CS and /digi servers too (I've mailed it to CoMsTuD and digital for their next versions). Mixing servers with and without the patch isn't a problem, but there will be deops as long as there are double splits involving servers without the patch. The patch can be found at ftp://isr0954.urh.uiuc.edu/pub/orabidoo/channel.diff as well as http://www.eleves.ens.fr:8080/home/espel/TS/index.html If anyone has any other ideas or suggestions, plase mail me. -- e-mail: roger.espel.llima@ens.fr IRC: orabidoo even celery has life, what some ppl lack is a brain