Hi all,

As this is my first mail to this list a quick introduction; I'm one of the
guys coding stuff for QuakeNet, I've worked on some aspects of our current
pl18 patch and I'm involved in producing our next patch (which will be
against 2.10.11).

One problem that occurs from time to time on QuakeNet is very large channels
which form around specific events, for example CPL events where there are
channels with bots doing commentary on games etc.  The problem with these
very large channels is the part/join spam can generate a lot of traffic and
often ends up SendQ'ing users who don't have fast connections.

A possible solution to this problem would be a "high traffic" channel mode
which inhibits the sending of parts/joins to most clients.  This would
work something like this:

* New channel mode (let's call it +h for the sake of argument) can only be
  active in +m channels.  Thus only +v and +o users will actually be able to
  say anything.

* Channel ops can see all channel users as normal.  All other users can only
  see opped users, voiced users and themselves.  JOINs and PARTs and NICKs
  for -ov clients are only sent to opped users.

* If a normal user is opped/voiced then a JOIN is broadcast to all clients
  before the MODE.  If they are then deopped/voiced then a PART is sent
  afterwards (or even instead of the MODE).

* When a user is opped they can either be forced off the channel and back
  on, or a new NAMES can be sent (what do clients do if you do that to
  them?) or a sequence of JOIN messages can be sent to show them the "new"
  users.

* When a user is deopped, either they can be forced off and on again or a
  whole load of PARTs can be sent.

* Adding or removing the channel mode itself is problematic but will
  probably involve a variation of the above techniques.  Setting or clearing
  the mode will probably have some restrictions based on channel size.

The problem with the JOIN/PART vs. NAMES thing is that there will often be
literally thousands of nicks involved so NAMES is much more compact, however
forcing PART/JOIN or just broadcasting a new NAMES and expecting the client
to cope is "just a bit" hackish ;).

So, two questions:

(a) Has anyone done this before, if so how did you do it and what happened?

(b) What do you think of the above idea?

Any thoughts appreciated.

Cheers

splidge

Reply via email to