*** 20010526_3 by jdc
* Added support for time_t size checking during configure.  Would be
  appreciated if someone on a i386 Linux machine checked to see if the
  configure output returns 'no' or 'yes'...



*** 20010526_2 by davidt
- Doh. hopefully fix the endianness issue with the servlink io code,
  which I missed when cleaning up the code (i fixed the code to read
  data lengths, but not commands, oops).


*** 20010526_1 by leeh
- PING origin :destination
  why would the origin ever be anything but a clients nick, or a servers
  name?  

  the old code is #if 0'd for now.. if we're in agreement, we can probably
  remove the origin variable altogether, and just use sptr->name..


*** 20010525_15 by davidt
- Fix netjoins for the loc* stuff, move to locpeons, not peons.. ahem..


*** 20010525_14 by ejb
- added generation support to version.com.


*** 20010525_13 by davidt
- refcounts for outgoing sendbufs
  send.c now creates linebufs, which send_linebuf attaches to the
  clients sendq (increasing the refcount).  The same linebuf may
  be attached multiple times to different clents.
  As usual, send_queued_write will then call linebuf_flush,
  which will attempt to write the data to the net, and call
  linebuf_done_line (which now only frees the buf if the refcount
  is zero) if successful.

  We still do some weird stuff in send.c, and I'd be a lot happier if
  we adjusted sprintf_irc.c to contain a vsnprintf function, instead
  of relying on IRCD_BUFSIZE*2.  It might also be useful to create
  a varargs linebuf_put function to avoid vsnprintf'ing into a buffer,
  then copying that into a linebuf.

- Add dlink_list locchanops, lochalfops, locvoiced, locpeons; to
  struct Channel;
  I'm not sure if this should stay...
  On the one hand: it speeds up sendto_channel_local/sendto_common_channels
  on channels with a large number of remote users.
  On the other hand: it uses an extra 32bytes/channel + 48bytes/member,
  and also slows down MODE +ovh/-ovh slightly on channels with lots of
  local users.


*** 20010525_12 by ejb
- make version.c for vms actually work..


*** 20010525_11 by ejb
- added auto version.c support for VMS (thanks to robert byer).


*** 20010525_10 by leeh
- dont show ips of servers/admins in /trace for non-admins
- dont show ips of servers/admins in /stats L for non-admins ;p

  are there anymore?  stats c, stats ? are already done..


*** 20010525_9 by db
- removed BUF_BLOCK_SIZE no block allocator.



*** 20010525_8 by davidt
- Fix problems with >8:1 compression.


*** 20010525_7 by davidt
- Remove isatty(0) check, as it may very well be a tty now...


*** 20010525_6 by davidt
- Erp, we now set fds 3..LAST_SLINK_FD non blocking, not 0..LAST_SLINK_FD,
  somehow FreeBSD-CURRENT doesn't care, but FreeBSD-STABLE really really
  does...


*** 20010525_5 by davidt
- Add missing #include and #ifdef.. argh.


*** 20010525_4 by davidt
- change servlink to avoid using stdin/stdout/stderr, and start from fd 3,
  in an attempt to make solaris happy.


*** 20010525_3 by davidt
- Make fd_note take (int fd, char *format, ...), to avoid using sprintf
  every single place we call fd_note.
- add support for reading from the servlink control fd in ircd.
- add error messages to servlink, which are displayed to all opers on the
  local ircd...
- add zipstats (/stats Z, updated every time collect_zipstats is called
  [see /stats E]).


*** 20010525_2 by leeh
- hide ips in stats ? from opers..
  we also need to do this in trace


*** 20010525_1 by ejb
- fix compile on freebsd.


*** 20010524_25 by ejb
- add the version.c stuff also.


*** 20010524_24 by ejb
- ok, i think this is the last VMS commit for a while.
  it should work fine .. updated the docs (README.VMS) too.


*** 20010524_23 by ejb
- VMS support. not SERVLINK yet, still working on it ..
  however, we can now link a VMS server, and it'll work.


*** 20010524_22 by davidt
- Ugh. revert the last commit, we don't have the capab from the remote
  server until it recognises the CRYPTSERV command, so we can't do that
  must get more sleep....


*** 20010524_21 by davidt
- test for ENC capab before trying to create an encrypted link, else
  the remote server doesn't respond to CRYPTSERV, and we sit there for
  a while and time out...


*** 20010524_20 by davidt
- add cryptlinks commands to STATIC_MODULES list

*** 20010524_19 by davidt
- oops, miscounted a } in my fix, so cryptlinks + ziplinks broke.
  really really fix it this time. heh. I'm tired after a day of debuging
  that evilness... :)


*** 20010524_18 by davidt
- hmm, forgot to commit this... remove outdated @SSL_*@ stuff from
  contrib/Makefile.in


*** 20010524_17 by davidt
- Remove some of the evil debugging stuff...
- Tidy up the code


*** 20010524_16 by ejb
- SERVLINK support for VMS.


*** 20010524_15 by davidt
- EVIL EVIL EVIL EVIL EVIL EVIL bug. I'm stupid.
- I'll tidy up the mess i made of this code in a minute, but I can barely
  beleive I found that bug, so I'm committing the fix now.


*** 20010524_14 by davidt
- erk, turn off slink-*-logs by default, since they could easily become
  huge...
- also select different data to be logged, since the problem seems to be
  100% crypt related, now just log data pre/post encrypt/decrypt, instead of
  as its read from the ircd, and as its written to the wire..


*** 20010524_13 by davidt
- Fix compiler warnings in servlink

*** 20010524_12 by davidt
- ick, commit _working_ IO logging support....


*** 20010524_11 by davidt
- use checkError instead of a bunch of tests against EAGAIN/-1/0/etc,
  the code should now: a) work on VMS, b) look slightly cleaner
- add optional (#define'able) IO logging in an attempt to track down this
  evil bug where decryption fails for random blocks of data.
- add asserts to try to find said bug.
- move two break;s inside an #endif


*** 20010524_10 by androsyn
Fixed for a very stupid buglet that would treat 3ffe:x:x::1 as ::1




*** 20010524_9 by ejb
- more VMS support.
  ircd.exe now builds and runs, and accepts clients.
  still servlink left to do.


*** 20010524_8 by davidt
- Fix core in HasID()


*** 20010524_7 by db
- removed the SYSLOG for the debug block allocator, there is no more
  block allocator
- fixed typo in TODO



*** 20010524_6 by davidt
- Fix buffer overflow in s_serv.c setting fd_note stuff
- Tidy up servlink code more in an attempt to find the weird and
  evil bug which is in there somewhere...


*** 20010524_5 by kreator
- fix self-referencing in README.FIRST :-)


*** 20010524_4 by toot
fixes a couple of small compile warnings in adns


*** 20010524_3 by kreator
- fix small typo in example conf (comRession options :-)


*** 20010524_2 by leeh
- %u -> %lu
- %d -> %ld
- This broke more stuff than it fixed.. theyre fine like this ;p


*** 20010524_1 by ejb
- IRCD.EXE now compiles on VMS.  servlink not working yet,
  nor openssl etc. it doesn't seem to run after it compiles either.


*** 20010523_11 by davidt
- Add slightly more user-friendly error messages to m_cryptlink.c
- Fix stupid bug where both fd_note's were set on the same socket.


*** 20010523_10 by davidt
- MISSING_SOCKPAIR support, for systems which don't support SOCKPAIR,
  use individual (unidirectional) pipes to communicate with servlink.


*** 20010523_9 by davidt
- fix non-openssl build

*** 20010523_8 by jdc
* Fixed implicit decl. of bzero(3).



*** 20010523_7 by jdc
* Changed a whole slew of long int references (%ld and %lu) to
  %d or %u.  Most of these went alongside channelts, which is
  defined as time_t.



*** 20010523_6 by leeh
- kserver -> cryptlink


*** 20010523_5 by davidt
- Fix gettext detection


*** 20010523_4 by davidt
- Fix for an encrypted/compressed recvq overflowing the linebuf that
  it is stuffed into until we can hand it off to servlink to be decrypted
  into something that we _can_ parse into lines, since it may very well not
  include any \r\n chars....


*** 20010523_3 by davidt
- Remove extra 'depend:' line
- Tidy up servlink code slighty


*** 20010523_2 by davidt
- Add check for openssl >= 0.9.6
- Convert servlink to the new dependency system


*** 20010523_1 by toot
fixed a format error, and a couple of compile warnings


*** 20010522_7 by ejb
- better  make depend, no longer uses .depend;


*** 20010522_6 by davidt
Big commit of cryptlinks_ng-pre6b.diff.

There's only two remaining known issues with the servlink/cryptlink/ziplink
code, and maintaining patch sets is becoming lots of work, so I'm committing
this.  I think everyone agrees this should be in before 7.0 anyway, so it
should get as much testing as possible in the tree...

Various things done:
- Added servlink, external process for server<->server links.
	Known issue: decompression buffer can be filled, and the servlink
		process will abort.  Need to flush the output then start
		decompressing again, as increasing the size of the output
		buffer beyond *6 is getting silly.
- Added hooks to configure.in to detect zlib.
- Fixed configure.in to detect openssl more sanely.
- Added cryptlinks support to ircd/servlink
	Known bug: DES/56 and 3DES/168 doesn't work between hybrid-7 and
		hybrid-6 servers.  This should be fixed by an update to
		the hybrid-6 patch.
- Updated example.conf
- A few other bugfixes I can't remember, no doubt.



*** 20010522_5 by davidt
Directory /cvsroot/ircd-hybrid-7/servlink added to the repository


*** 20010522_4 by toot
. changed /list so vchan Id's show just before the topic, instead of 
  in the channel name
. renamed a variable in channel.h that was just 'blah' :)


*** 20010522_3 by toot
renamed num_bed to num_mask, there's no +d mode now


*** 20010522_2 by toot
added  those tags properly, :P


*** 20010522_1 by toot
updated some docs slightly, and added a couple of CVS id tags


*** 20010521_3 by a1kmm
- Removed efserv from the ircd tree, it is imported into its own tree.


*** 20010521_2 by a1kmm
- Added the yucky buggy efserv code I have so far. At least it is a start.


*** 20010521_1 by a1kmm
Directory /cvsroot/ircd-hybrid-7/efserv added to the repository


*** 20010519_5 by davidt
Remove duplicate 'modules' entry in SUBDIRS=


*** 20010519_4 by a1kmm
*sigh* yet another commit, we do check in sendnick_TS after all. Hopefully
the last commit for this bug...


*** 20010519_3 by a1kmm
- Made client_burst_if_needed check the target actually is a client :)


*** 20010519_2 by a1kmm
- Had second thoughts about my last commit - now we burst the client sending
  the message if necessary. Also changed all of the functions. Note however
  that we still need to change more of the functions to use this new functionality
  by passing the source_p instead of client_p.


*** 20010519_1 by a1kmm
- Don't send modes to lazy link clients for channels when the client doing
  the mode change hasn't been burst. This is a pretty ugly kludge as the
  mode is simply not sent(which could result in a desync!) but it is better
  than having the mode dropped and the client sending it killed.


*** 20010518_1 by db
- removed mtrie doc from index.txt



*** 20010517_12 by lusky
- added some missing docs to the index


*** 20010517_11 by lusky
- revved patchlevel to beta5


*** 20010517_10 by db
- resolved conflict in CVS oopsies



*** 20010517_9 by lusky
- revved patchlevel to beta4


*** 20010517_8 by leeh
- make klines come from users too.. this simplifies things massively

  a side effect being all remote klines prior to this wont work :P


*** 20010517_7 by toot
simplifies things in ms_gline a little more


*** 20010517_6 by jdc
* Admins permitted to do Dlines with bitmasks as small as /8.



*** 20010517_5 by leeh
- theres no reasons why glines cant use the opers nick.. it simplifies
  things massively.. well, if we didnt support hyb6 that is ;)

  this will break older hyb7s, buts its better now than later


*** 20010517_4 by toot
it was okay before, actually :P


*** 20010517_3 by toot
fixed -6 style glines so they are treated more line -7 style..


*** 20010517_2 by toot
added compatability with hyb-6 glines


*** 20010517_1 by a1kmm
- Removed unused local variable.


*** 20010516_5 by leeh
- tis the season of goodwill comments, and all that :)


*** 20010516_4 by leeh
- let halfops see and set +eI


*** 20010516_3 by leeh
- check parc == 5, because if we trust hyb6 glines.. we'll gline the
  oper instead of the target..


*** 20010516_2 by leeh
- optimised the sjoin table slightly.. +nt should really be first ;)
- sendto_serv_butone -> sendto_cap_serv_butone() in m_gline..


*** 20010516_1 by toot
. some misc cosmetic cleanups
. fixed CHANMODES token.


*** 20010515_9 by leeh
- added the looking up hostname msg back


*** 20010515_8 by leeh
- more formatting things for server kills..


*** 20010515_7 by leeh
- fixed logging for kills..


*** 20010515_6 by db
- fixed core on /rehash



*** 20010515_5 by toot
slight mistake in ms_version


*** 20010515_4 by toot
. show ISUPPORT numeric on remote /version (will be 105 rather than 005)
. only put the VCHANS token in ISUPPORT if disable_vchans if off


*** 20010515_3 by jdc
* Forgot a comma.  Oops.  :-)



*** 20010515_2 by db
- missing {0,0} in flags in set_final_mode. How this has worked
  so long without being spotted, is beyond me.



*** 20010515_1 by toot
removed a fixed bug from BUGS


*** 20010514_4 by androsyn
Fixed borked version of configure that was built with a beta version of autoconf.
It broke IPV6 support..go figure..


*** 20010514_3 by toot
/trace <nick> didn't know the time


*** 20010514_2 by toot
. unregged clients can have a nick sometimes (NICK before USER), so changed
  m_admin back and fixed it.
. names with no params was showing the ENDOFNAMES numeric for each channel
  it should just show it once, at the end with a * ..


*** 20010514_1 by a1kmm
- Fixed "ievil's core".



*** 20010513_3 by leeh
- unregged clients wont have a nick..


*** 20010513_2 by davidt
Fix core on /close


*** 20010513_1 by db
- This should fix the multiple numeric 366's
- some cleanups



*** 20010512_6 by db
- missing int duh



*** 20010512_5 by a1kmm
- Removed 2 pointless asserts.


*** 20010512_4 by db
- tidied up vchan_show_ids
- don't show <secret> twice



*** 20010512_3 by toot
put PREFIX's in the correct order, in 005 numeric.


*** 20010512_2 by toot
clearchan was calling remove_user_from_channel with the wrong number of args..


*** 20010512_1 by kreator
- commited fl_'s patch:
  make cjoin take account of disable_vchans=yes;


*** 20010510_2 by fl_
- we shouldnt really send CAP_ZIP.. we can actually support it but
  in theory we dont, the code is left in, just the cap sending


*** 20010510_1 by a1kmm
- Fixed a major memory leak.
- Added some better memory debugging code for dlink_nodes.


*** 20010509_2 by a1kmm
- Re-added androsyn's fix for blocking on one list and neglecting the others.
  Didn't realise that it had been recently reverted. We should no longer go
  up to 100% CPU with the graduated usleep code.


*** 20010509_1 by a1kmm
- Added a graduated delay system to stop the idle or lowly loaded ircd from
  soaking up too many clockcycles, and removed some of the unneccessary
  calls to set_time/time.


*** 20010508_3 by db
- removed more inflammatory language from comments.



*** 20010508_2 by ejb
- remove the somewhat controversial message wrt Path: in kill messages.


*** 20010508_1 by fl_
- this:
Try setting the delay rate for the poll idleclient to 0 like the rest of 
the poll() stuff is...

seemed to make ircd spin out of control.. it was stuck on 100% cpu..
so its reverted, dunno what this actually did though..


*** 20010507_3 by androsyn
Fixed various minor issues with autoconf...


*** 20010507_2 by fl_
- #if IPV6 -> #ifdef IPV6


*** 20010507_1 by toot
removed show_failed_oper_id cause it was redundant.. failed_oper_notice does
the same thing


*** 20010506_1 by androsyn
Seems I broke the modules install process..this fixes it now..


*** 20010505_6 by androsyn
Try setting the delay rate for the poll idleclient to 0 like the rest of the poll() stuff is...


*** 20010505_5 by androsyn
Added support for statically linked modules within autoconf.  Use
./configure --disable-shared-modules to get statically linked ones...



*** 20010505_4 by fl_
- tidy up the IsOper() checks


*** 20010505_3 by fl_
- removed cap_vchan, as we dont actually use it anywhere..
- added mo_stats()


*** 20010505_2 by fl_
- slight update :P


*** 20010505_1 by fl_
- till make install takes account of the paths in config.h, people shouldnt
  change the paths in there.. especially not the modules ones.. so warn
  them not to :P


*** 20010504_3 by db
- major major stupid buffer overflow in send.c MEA CULPA fixed.



*** 20010504_2 by androsyn
Added a check for spoofs to prevent moron server admins from doing stupid
things like having spoofs in excess of HOSTLEN.


*** 20010504_1 by fl_
- dont burst persistant channels
- destroy_channel() if the user is parting.. persistant chans should only
  be for splits imo, else users are just gunna break their channels ;)

  ideally this should be extended to quits which arent a netsplit.. but
  ill see about that another day :P


*** 20010502_10 by androsyn
I think I really found the source of fl_'s cores.  Basically what was
happening was we were not resetting the callback to NULL like we do 
for s_bsd_kqueue/s_bsd_devpoll so I *think* we were calling the callback
multiple times.


*** 20010502_9 by toot
added WALLCHOPS to 005 numeric, as we support /notice @#channel


*** 20010502_8 by toot
updated PREFIX format in 005 numeric, and added CHANMODES=A,B,C,D
see supported.h


*** 20010502_7 by androsyn
$5 says this fixes fl_'s cores...I don't think this is the right fix
though..


*** 20010502_6 by androsyn
Undo my send_queued_write() hack..


*** 20010502_5 by androsyn
Another assert() to try to catch fl_'s cores...


*** 20010502_4 by a1kmm
- added hostmask docs.


*** 20010502_3 by a1kmm
- Minor fix on my last commit, for when >1 line is read at the same
  time...


*** 20010502_2 by a1kmm
- Sanified the flood checking and sendq checking code a little.


*** 20010502_1 by db
- removed caching of channels for lazylinks in mode and topic
  I think those were the two flame was complaining about.



*** 20010501_3 by ejb
- typo.


*** 20010501_2 by ejb
- fixed STRING types in getopt.c.


*** 20010501_1 by db
- removed bogus assert() its trying to call that callback, it can't be NULL



*** 20010430_9 by fl_
- %c -> %s


*** 20010430_8 by fl_
- stats fixy thing :P


*** 20010430_7 by toot
use the parser to do the parc check in m_stats instead..


*** 20010430_6 by jdc
* Previous changes to message.tab applied to these two .pos.



*** 20010430_5 by jdc
* RPL_ENDOFSTATS was returning the requested STATS character/word as
  a %c, while the argument passed in m_stats() was a string.  All
  fixed (%c --> %s).



*** 20010430_4 by jdc
* m_stats() did not check the parc count.  Doing a /STATS without any
  arguments could result in the server just sitting there until some
  output was sent, then the connection would be severed.
* Please note the change to message.tab (in another update) -- this is
  CRUCIAL to the above fix.
* Added descriptions for the STATS letters in stats_let_table[].  This
  will be used (in the future) for for something like /STATS HELP,
  once word-based STATS are added.



*** 20010430_3 by jdc
* Added /QUOTE ACCEPT documentation to opers.txt.



*** 20010430_2 by ejb
- call valid_comment even for IPv6.. 


*** 20010430_1 by a1kmm
- Fixed the compile warnings with fl_'s stats code.


*** 20010429_6 by androsyn
Removed the assert()'s andrew had put there.  This seems to get rid of the
cores. But now I need to figure out why poll() performance sucks so bad,
other than it being poll() which sucks by nature.


*** 20010429_5 by androsyn
Hmm..okay..a slightly different assert...


*** 20010429_4 by androsyn
Added "yet another assert"(tm) to track down fl_'s core.


*** 20010429_3 by fl_
- couple of small bugs in stats
- replaced unused things in stats Q with "*"
- exempt {}; dont have reasons..


*** 20010429_2 by fl_
- massive rewrite of m_stats.c to use a table based lookup for stats..
  this means we can now support /stats auth etc.. dont attempt it yet tho,
  the table hasnt been filled with the things ;)


*** 20010429_1 by androsyn
Fixed to make solaris 8 compile properly for IPv6


*** 20010428_9 by a1kmm
- Added some more asserts to fd code to try and catch fl_'s core at an
  earlier and more useful stage.


*** 20010428_8 by fl_
- dont warn ops that halfops are trying to kick them, we dont do it for
  voices/peons, so why start now?


*** 20010428_7 by jdc
* Added support for -pidfile command-line argument, a la toot.



*** 20010428_6 by fl_
- send kickers nick, not servername


*** 20010428_5 by jdc
* Bump up the _version string.



*** 20010428_4 by jdc
* A non-opped client in a +a channel should be shown the local server
  that kicked them, NOT their own nick (eg. me.name  vs.  who->name).
* Server-based kicks (for things like CLEARCHAN) now show the actual
  server that did the CLEARCHAN (previously it showed your own nick).
  The reason for this is somewhat political (sptr->name vs. me.name):
  in the case of oper abuse, the user should have *some* idea of what
  server requested the CLEARCHAN, in the case of an oper getting out
  of control.  This therefore provides some security for the user who's
  channel just got cleared.



*** 20010428_3 by fl_
- you know, I just hate irc clients.


*** 20010428_2 by fl_
- shouldnt really send our name, then the path, then the reason ;P


*** 20010428_1 by habeeb
Modified NAMES to work with vchans.  "NAMES <channel> [vkey]".  If no
vkey is specified it will check if you are on <channel> or one of its
vchans and default to that channel.  Otherwise a list of vchans are
specified.  "NAMES <channel> !" will give a list of channels since
the key is invalid.  It should not break current clients.


*** 20010427_6 by habeeb
Fix for vchan listing bug.


*** 20010427_5 by habeeb
Fix for similar bug that was in WHO.


*** 20010427_4 by habeeb
Took out an #undef I missed in 20010424_6


*** 20010427_3 by habeeb
Switched channel_chanop_or_voice() around to return half ops before voice.


*** 20010427_2 by habeeb
Fix for WHOIS buffer overflow in listing channels pointed out by pasky.


*** 20010427_1 by fl_
- you cant add brackets if the kill isnt yours :)
  if you do your gunna end up with a reason like ((((((ghost)))))) ;P


*** 20010426_6 by jdc
* Fixed unused retval variable in kq_update_events() via #if 0.
* In kq_update_events(), kqoff was never set to 0 correctly (typo;
  someone had "== 0", not "= 0").



*** 20010426_5 by jdc
* Fixed unused path declaration via #if 0.
* ms_kill() lacked a "(%s)" for the kill reason at the end of the function.



*** 20010426_4 by fl_
- ok, this should fix kill
  parv[2] contains both path and reason.. to save us splitting parv[2] up
  to get at the path.. we generate the path ourselves (user who sent
  the kills server/host/ident/nick).. 


*** 20010426_3 by fl_
- tiny fix to the parser


*** 20010426_2 by toot
added max_accept to ircd.conf.. to replace hard coded MAX_ALLOW


*** 20010426_1 by kreator
- no need to ask for getopt() in README.FIRST, since we provide one (ejb-s
  fix)
- added NetBSD in tested platforms (I run hyb6&7 there)


*** 20010425_6 by fl_
- ifdef 0 -> if 0


*** 20010425_5 by kreator
- missing "" for vhost in convertconf, together with missing `;' in
  oper_umodes line.


*** 20010425_4 by toot
added make_daemon in ircd.h to kill a compile warning..


*** 20010425_3 by lusky
- revved patchlevel to beta3
- moved dserv out of the tree


*** 20010425_2 by db
- optimized kqueue a bit



*** 20010425_1 by androsyn
Fix so that kqueue will compile on FreeBSD 4.2 which doesn't have
NOTE_LOWAT.



*** 20010424_14 by habeeb
Adding me, because I'm bored.


*** 20010424_13 by androsyn
Please test this.  Basically we try send_queue_write() before entering
select/poll/kqueue now.


*** 20010424_12 by androsyn
Really fix the ::1 stuff. It seems that the COMPAT macro doesn't see ::1 as
a ipv4 compatible address.


*** 20010424_11 by androsyn
Fixed the ::1 stuff for good :)


*** 20010424_10 by db
- committed Alfred Perlsteins (zb^3) changes to s_bsd_kqueue.c
  tested.. 



*** 20010424_9 by androsyn
The ::1 bug is fixed by mapping it to its ipv4 counterpart..


*** 20010424_8 by androsyn
This hack will map ::1 to 127.0.0.1 along with any other IPv6 addresses that
have the upper 96bits set to 0.


*** 20010424_7 by androsyn
Fixed coredump if /etc/resolv.conf is unreadable.  We log the event to the
logfile right now.  I need to move the dns init up further in the init
process so we can output to standard error.


*** 20010424_6 by habeeb
Changed daemon() to make_daemon() to fix printing of startup messages,
removed code to check for daemon() in configure, cleaned up a few things.


*** 20010424_5 by jdc
* Removed kqueue bug; recent cvs seems to have fixed it.



*** 20010424_4 by db
- this fixes kqueue. over-ride low water with a NOTE_LOWAT
  setting low water to 1 as in the man page. (thanks to adrian for
  pointing me to this)



*** 20010424_3 by jdc
* Fixed implicit decl. of kill(2) (lacked signal.h include)



*** 20010424_2 by androsyn
/dev/poll now works.  Somebody should check and see if this fixes kqueue as well     


*** 20010424_1 by androsyn
Fixed a potential buglet where we ignore EAGAIN when returning from recv()


*** 20010423_1 by db
- removed docs for code we have removed
- hint. someone should write up a doc on how the hash kline code works. hint



*** 20010422_1 by fl_
- added back oper accountability for KILL's.. if the client we're killing
  is opered, we should tell them who sent the kill..


*** 20010421_6 by toot
made stats t and stats z a bit more readable.


*** 20010421_5 by kreator
- fix example conf: we don't support cpp, but we do support .include
  "blah" and .include <blah>
- add check_pidfile() that does kill 0 ircd_pid from PPATH: that will
  check if there exists another daemon running and exit if it is there


*** 20010421_4 by fl_
- changed an assert to a simple warning.. its a bit too highly sensitive
  to have an assert there..


*** 20010421_3 by fl_
- habeebs pid fix..


*** 20010421_2 by toot
undefine MEMDEBUG 



*** 20010421_1 by fl_
- switched the order of voices/halfops so theyre right..


*** 20010420_11 by fl_
- missing ;


*** 20010420_10 by a1kmm
- Fixed a deadlock when non-opped users request names on a +a channel. Fixed
  the code to work correctly too.


*** 20010420_9 by a1kmm
- Fixed K-line exemptions on oper spoofed users on rehash.


*** 20010420_8 by jdc
* Added dns_query_host and dns_query_port options to TODO list.
  These would be fantastic; some of us always wish to query on
  port 53 on a certain IP, ya know.  :-)



*** 20010420_7 by a1kmm
- Removed wrong log message that was in with the real one.


*** 20010420_6 by a1kmm
- Fixed some compiler warnings.


*** 20010420_5 by androsyn
I'm bad and added a C++ style comment


*** 20010420_4 by androsyn
Added a new at the end of the file to make Sun's cc happy.   


*** 20010420_3 by androsyn
Fixed signedness warnings with Sun's cc


*** 20010420_2 by androsyn
Added TODO for static modules


*** 20010420_1 by db
- removed function in m_names recoded m_names a bit
- made set_channel_mode_flags global
- started on cleanups for m_who, notably now using set_channel_mode_flags



*** 20010419_11 by db
- oops. peons were being shown as voiced. 



*** 20010419_10 by db
- rewrote channel_member_names finally. first cut



*** 20010419_9 by jdc
* Added kqueue bug.
* Added LL server channel existence bug.



*** 20010419_8 by a1kmm
- Fixed the warning about setting the clock back.
- Attempt to recover from a set back clock by moving the scheduled events
  back in time by the amount the clock was set back.


*** 20010419_7 by fl_
- its amazing the difference < and > make.. (ta habeeb)


*** 20010419_6 by fl_
- ops should never have their part reason removed.. 


*** 20010419_5 by fl_
- puts() could do with some \n's in there..


*** 20010419_4 by fl_
- *groan*  ok, this will make convertconf add logging/modules/general
  blocks to the ircd.conf, after its converted it..

  we should probably encourage a bit more wider usage of it too..


*** 20010419_3 by a1kmm
- Re-enabled the anti-flooding code.
- Give the user a burst for 3s at the start when they can send more stuff
  like JOINs and WHOs etc...
- Added a penalty which sets the user back as if they didn't have this extra
  burst if they try to use MODE on a channel, or PRIVMSG or PART in this
  period.


*** 20010419_2 by a1kmm
- Adding habeeb's patch to fix the antispambot code.
- Added a check on part message similar to that for QUIT to decide if the
  part reason should be allowed to be shown.


*** 20010419_1 by a1kmm
- Fixed the code to prevent redundant K-lines.
- Made sure we can always remove K-lines which are placed.


*** 20010418_7 by a1kmm
- Fixed unkline/undline to work properly with hostmasks. Still a bit messy,
  and the rehash at the end is really bad, however.


*** 20010418_6 by fl_
- beginnings of a file we can dump to users on /help.. currently
  only covers usermodes/channelmodes.. additions are welcome :P


*** 20010418_5 by a1kmm
- Fixed hostmask code to work with exempt{} blocks.


*** 20010418_4 by fl_
- we now have stats e.. admittedly it doesnt actually do anything yet,
  but ill sort that later


*** 20010418_3 by fl_
- framework for exempt blocks 


*** 20010418_2 by jdc
* example.conf incorrect in regards to vhost="" syntax.  Fixed.



*** 20010418_1 by jdc
* Added display of pid to startup output.



*** 20010417_2 by fl_
- Eline -> ExemptKline
- Fline -> ExemptLimits


*** 20010417_1 by toot
this fixes the coredump if you did /trace with any "unknown" connections

get_class_name needed to default to something rather than NULL :)


*** 20010416_1 by fl_
- minor updates


*** 20010415_2 by fl_
- updated bugs with the msglocale stuff..


*** 20010415_1 by toot
a few little cleanups


*** 20010414_1 by davidt
Fix non OPENSSL build


*** 20010413_2 by davidt
- Add CRYPTLINK (formerly KSERVER) support.
  It seems to be mostly working, however:
  * The protocol will probably change next week, to be compatable with
    hybrid 6, etc..
  * There's a few possible bugs I can see in the code, but there's no
    sane way of fixing them until I (or someone else, hint hint :),
    creates a 'helper' process for server<->server links, which
    handles ziplinks/cryptlinks etc.


*** 20010413_1 by fl_
- added a warning about the order of auth blocks


*** 20010411_4 by db
- formatting fix



*** 20010411_3 by fl_
- added kre to contributors


*** 20010411_2 by kreator
- oops, forgot to reinit lineno and include_stack_ptr to make lexer
  reentrant.


*** 20010411_1 by a1kmm
- oops, forgot a DupString in parsing deny blocks in the parser. This fixes
  it.


*** 20010410_3 by kreator
Made .include for lexer.


*** 20010410_2 by db
- RPL_TRACEUNKNOWN third arg should have been a %s, remnant of
  the class # to class name move. oops. reported by Joao Luis Marques Pinto
  Lamego@PTlink.net



*** 20010410_1 by a1kmm
- Oops, do not delete tklines on rehash!
- Fixed testline a little to match "user@*" I-lines when an IP address is given.


*** 20010409_9 by davidt
Re-adding

*** 20010409_8 by davidt
Please work?


*** 20010409_7 by davidt
please work..


*** 20010409_6 by fl_
- added serverhiding checking to commands that can be used remotely..


*** 20010409_5 by a1kmm
- Removed a htonl that shouldn't be there... so now vhosts should work.


*** 20010409_4 by a1kmm
- Think that this gets the endianness right for the hash.


*** 20010409_3 by a1kmm
- GlobalSetOptions != ConfigFileEntries. Always check stuff works before you
  commit :)


*** 20010409_2 by a1kmm
- Always reply locally when a non-oper tries to use PING to ping a server
  and hide_server is on.


*** 20010409_1 by a1kmm
- Did my hashtable lookup code for hosts/addresses properly - now replaces
  patricia tries too, and provides proper IP parsing to replace is_address
  that works with IPV4 and IPV6. This also means that both CIDR and ip.*
  work with both IPV4 and IPV6.
- Changed the parser a little, so that we now simplify things by putting
  IP addresses in quotes. Deleted the complicating user=a@b vs ip=... ipv6=...
  thing for auth{} blocks, we now always do user=a@b, but we can put IPs(both
  V4 & V6) into the auth{} block. This means we can specify a username too, and
  simplifies things, although it does make unchanged older confs incompatible.


*** 20010408_4 by davidt
After reformatting kserver.txt, I couldn't resist rewriting bits of it,
so I decided instead of overwriting A1kmm's version, I'd add an
alternative..

I broke it into 2 seperate pieces, a KSERVER public key authentication
system/capab, and a MSGHASH capab (which requires KSERVER) for verifying
inter-server commands...

They both require lots of work :)


*** 20010408_3 by davidt
- Tidied up kserver.txt a little.

  Mainly formatting changes, but I also adjusted some grammar that took
  me 5 minutes to parse :)



*** 20010408_2 by fl_
- moved the bogus TS message to FLAGS_DEBUG
- updated opers.txt


*** 20010408_1 by fl_
- fixed a small bug


*** 20010407_1 by toot
/invite was showing the secret vchan name to users, cleaned m_invite a bit too
fixed "voodoo" invites on root chans


*** 20010406_2 by fl_
- updated todo a bit..


*** 20010406_1 by a1kmm
- Started the long process of reviewing and tidying up/documenting the adns code. Unfortunately, there is still
  much more to do. By doing this, hopefully we will make it easier to find and fix some of those adns cores
  that keep happening.


*** 20010405_2 by androsyn
Added a few asserts to check for NULL callbacks. I'm still not sure why this
is happening though.


*** 20010405_1 by a1kmm
- Added a proposed KSERVER protocol which will reduce the risk of password sniffing or connection hijacking
  attacks against servers.


*** 20010404_3 by androsyn
Additional changes for static modules.  We just need to make the build
system deal with this now.


*** 20010404_2 by androsyn
First half of my attempt to do statically loaded modules.  I suppose that
either all or none with static/dynamic modules, for the sake of simlicity.


*** 20010404_1 by androsyn
Fixed a particular adns core..i don't think this was the one walter was
talking about.


*** 20010403_4 by ejb
- fixed getopt.


*** 20010403_3 by ejb
- changed getopt.h to ircd_getopt.h.


*** 20010403_2 by androsyn
Fixed what could be a potential bug with the adns code.


*** 20010403_1 by androsyn
Fixed adns /rehash core..


*** 20010402_1 by db
- Edward, could you review this? 
  this fixes botch with getops.h



*** 20010401_7 by toot
removed some old stuff from the parser


*** 20010401_6 by toot
somemore ugly %lu's changed back to %d.


*** 20010401_5 by toot
fixes a couple of compile warnings in ircd.c..


*** 20010401_4 by ejb
- make an error be printed for unknown arguments.
- add 'ayb' to message-customisation.txt.



*** 20010401_3 by ejb
- some fixes to the getopt stuff.


*** 20010401_2 by ejb
- added first stab at new command line arguments system..
  not yet tested well, seems to work ok though.


*** 20010401_1 by ejb
- fix for broken daemon(), caused abort upon start.


*** 20010331_7 by db
- one more batch of cleanups on s_debug.c



*** 20010331_6 by ejb
- added debug.c for debugging. not used yet..


*** 20010331_5 by db
-more cleanups to s_debug.c



*** 20010331_4 by ejb
- more verbose initialisation messages.


*** 20010331_3 by toot
fixes some compile warnings


*** 20010331_2 by ejb
- fixed make .include checking stuff to actually work;
  rebuilt dependencies.


*** 20010331_1 by ejb
- remove 'always on' things from s_debug.c
  No point putting them in if they never change..


*** 20010330_3 by db
- removed the /rehash GC from opers.txt
- cleaned up s_debug.c a tad more, added in stats for bans, invex, except
- renamed cryptic variable names into more self documenting ones in
  s_debug.c



*** 20010330_2 by ejb
- added kre's /* */ comment code to the lexer
- properly fixed /rehash gc core (what's the point
  in keeping it and not making it do anything? just
  remove the whole thing).


*** 20010330_1 by androsyn
Removed a reference to the block allocator in m_rehash.c that prevented it
from being loaded.


*** 20010329_3 by fl_
- never do testing in BitchX..


*** 20010329_2 by fl_
- transferred the masking from channel.c for /names to m_who.c for
  /who..  we now randomly poll /who lists too.. 


*** 20010329_1 by db
- cleaned up s_debug.c memory reporting somewhat, there is still
  a duplicate user memory report to cleanup
- cleanedup the linebuf.c code a bit, removed unnecessary gotos (*fwap* adrian)
- bsd make does not like not having quotes around .includes, I have
  been bad, and temp commented them out for now...



*** 20010328_6 by db
- more cleanups



*** 20010328_5 by androsyn
Fixed adns core.  Somebody accidently forgot to set the callback for
auth_dns_callback().  -Wall caught this rather easily. BTW -Wall should
probably be turned on for gcc by default.


*** 20010328_4 by fl_
- changed lots of include ".depend" into include .depend.. 


*** 20010328_3 by fl_
- we were potentially joining a user to a channel more than once.. not
  a good thing..


*** 20010328_2 by db
- removed blalloc.c and blalloc.h



*** 20010328_1 by db
- Massive commit to remove blalloc.c code, first pass through
  When we first did blalloc, systems did not use block allocators for
  malloc, now they all do. blalloc.c/blalloc.h have now outlived their
  usefulness. 



*** 20010327_1 by androsyn
Fixed stupid connect bug...the block heap doesn't memset() our
blocks..grr...


*** 20010326_2 by ejb
- more messages for ayb.po


*** 20010326_1 by ejb
Someone in a #ircd-coders far, far away..

BOOM!!

<Dianora> What happen?
<Rodder> Someone set up us the IRCD!!
<Rodder> Main server turn on.
<Dianora> It's you.
<madmax> How are you client_ps?
<madmax> All your root chptr are belong to us!
<madmax> You have no chance to rehash
<madmax> Make your time.
<madmax> Ha Ha Ha.

- added ayb.po
- fixed custom.po



*** 20010325_1 by davidt
Reformatted example.conf to 80 chars wide

*** 20010323_9 by ejb
- removed CPP for now.


*** 20010323_8 by ejb
- updated example.conf to match the new parser.


*** 20010323_7 by ejb
- added cpp support to the parser.
  we now pass ircd.conf through 'cpp -P' before we pass it
  to lex.  this could possibly be implemented slightly better
  (esp. error checking).



*** 20010323_6 by ejb
- add support for decades, centuries, millannia,
  and terabytes in the parser.


*** 20010323_5 by toot
couple of fixes for fussy compilers


*** 20010323_4 by ejb
- add support for '1 minute 30 seconds' and suchlike in the parser.


*** 20010323_3 by ejb
- add a simple arithmatic parser to ircd.conf.  it understands
  +, -, *, / and () precedence.



*** 20010323_2 by ejb
- duh. i like |.  don't you like |? | are gooooooood.



*** 20010323_1 by ejb
- support for saying '20 megabytes' and '5 hours' and such like
  in ircd.conf.  for some reason 'sendq=100;' to mean 100kb isn't
  working.. should be fixed before release.



*** 20010322_4 by ejb
- commit send.h as well..


*** 20010322_3 by ejb
- add sendto_match_vacap_servs(), and make set_channel_mode
  use it.  not tested yet ..


*** 20010322_2 by androsyn
Forgot an argument to inetntop()


*** 20010322_1 by androsyn
This should fix /trace for the IPv6 case..


*** 20010321_3 by ejb
- turn uint32_t into u_int32_t and make configure check for it.


*** 20010321_2 by ejb
- warn if user specified no $MAKE to configure..


*** 20010321_1 by ejb
- detect in configure how we should include files in Makefile.
  This isn't a perfect test, but it should work..


*** 20010319_4 by toot
/away flood control was a bit harsh


*** 20010319_3 by androsyn
Adds our own definition of INADDR_LOOPBACK if it wasn't defined by the OS
headers. Don't you love hacks around hacks. The first being the hack
checking if the nameserver was 0.0.0.0, if so, set the nameserver to
127.0.0.1.


*** 20010319_2 by toot
restored some stuff in config.h that'd been changed..  and synced config.h.dist


*** 20010319_1 by toot
. moved anti_spam_exit_message_time to ircd.conf
. don't add "Client Exit: " if the quit message was blank anyway.


*** 20010318_1 by madmax
RPL_WELCOME now says:
Welcome to the NETWORK_NAME Internet Relay Chat Network 

mIRC actually parses this and puts the NETWORK_NAME string into $network


*** 20010317_1 by androsyn
This file was left over from when I merged into the tree.  Its not need for
anything.


*** 20010316_4 by db
- Submitted on behalf of Walter Campbell



*** 20010316_3 by androsyn
Somebody used the boilerplate from vchannel.c and forgot to change the
filename on the top. Yes I know I'm nit-picking :)


*** 20010316_2 by fl_
- another minor fix..


*** 20010316_1 by fl_
- minor fix to the oper_umode stuff..


*** 20010315_4 by db
- This alleviates the high counts found in the block allocator in profiles.
  The problem was a # of block count that was set way too low.
  128 for BUF_BLOCK_SIZE means we allocate a bit map of 128 bits
  which means for many allocated linebufs, we end up with a series
  of smallish Block's with 128 bit maps... 
  In reality, the block allocator should be rewritten to embed a
  "hint" into the allocated memory as to where the returned memory
  block should go. There are a few other easier to do optimizations
  as well. It has been pointed out that modern OS's have now caught up
  and now use block allocation for malloc, if thats true, the block
  allocator code might well be obsolete.
  


*** 20010315_3 by db
- print all channel member lists at once in names
  this hides somewhat better who the chanops are.
  Its not optimized at all at the moment, fact is its terrible.
  If someone optimizes it before me, great. I won't mind. ;)



*** 20010315_2 by fl_
- made jupe use exit_client()
- added a hack for the long reason core.. I made into into a topiclen,
  until someone wants to change it to something that wont core like
  ircnsprintf when its >reallen


*** 20010315_1 by fl_
- tidied up whats-new a lot.. split the stuff into sections etc :)


*** 20010314_8 by toot
this fixes the bug that made join #x,0 put you in #x0


*** 20010314_7 by fl_
- added a config file option for disabling vchans.. added by request but
  I dont like it :|


*** 20010314_6 by androsyn
I forgot a ; on the strlcpy prototype.



*** 20010314_5 by androsyn
Adds strlcat and strlcpy for systems that don't have them.  configure now
checks for the existance of such functions on the system. 


*** 20010314_4 by davidt
- Fix multiple user=""; lines per auth{} block slightly.
- Allow multiple user=""; lines per operator{} block.
- Documented the above.


*** 20010314_3 by fl_
- moved oper_umodes (modes set on /oper) from config.h -> example.conf
  with a check if there isnt one in the config..
- mebbe we should allow this per oper block on hyb7.1?


*** 20010314_2 by androsyn
Fixed devpoll support so it would actually compile on Solaris.  I'm not sure
if it works yet or not though.


*** 20010314_1 by toot
. let halfops set +v and +k
. removed some unused variables, and moved one of trhe PERSISTANT_CLIENT
  ifdefs to kill a compile warning ;)


*** 20010313_5 by davidt
- Allow multiple user="..."; lines per auth{} block...
  (oper{}, etc. blocks can probably be changed to work the same way
   quite easily, I'll look at it tomorrow, to see what would actually
   benefit from it)


*** 20010313_4 by ejb
- don't build m_error.c as a module, it has to be static for now. 



*** 20010313_3 by fl_
- ripped the flood bit out of config.h, also if they dont set a config
  option, we default to 8 in ircd.c, which is what was in config.h


*** 20010313_2 by fl_
- added min_nonwildcard to config for the minimum real chars you need for
  a gline/kline (remote/local)
- moved the set options below the config file reading in ircd.c
- instead of #define FLOODCOUNT in config.h.. we now set the default on
  startup in the config.. I think ill try doing of much as this as I can,
  so config.h gets smaller :)


*** 20010313_1 by adrian


initial /dev/poll support, again ripped from my devpoll code in a
squid branch.

/dev/poll is the solaris solution to the suckiness of poll/select
on large/active FD sets. Its kind of like kqueue but using a poll
interface. My (quick) tests show that its actually rather nifty
with large FD sets, so this should make hybrid-7 Not Suck(tm) under
Solaris 7/8.

I believe there's a linux patchset to give the kernel /dev/poll,
but I hear its crap. heh.

This code isn't guaranteed to even compile on a solaris box yet,
but I wanted to get it in anyway. It doesn't break a "default"
build (ie without --enable-devpoll). I promise to fix it in a few
hours. :)



*** 20010312_3 by androsyn
semicolons are our friends. I like semicolons, don't you :P


*** 20010312_2 by a1kmm
- Fixed fl_'s revert and fixed the klines bug.
- Please not that persistant clients are temporarily back in, but please don't try and remove them by reverting
  because I can guarantee it will break more stuff than it fixes, like last time. These things are best
  removed manually, as it is silly to revert days of work for a little thing like a "hme" to should be a
  "hmc" as one done last time. However, this being an open source project, we probably don't want to actually
  hide our code from the public - how about if we go for:
#ifdef PERSISTANT_CLIENTS
#error Persistant clients aren't finished yet.
...
#endif
 which should stop people defining but not block people from seeing it. Furthermore, we should not so much
 as put a #undef PERSISTANT_CLIENTS or /* #define PERSISTANT_CLIENTS */ in config.h or anything, as that is
 just asking people to define it. Or we could just manually delete them(which will be easy as they are all
 wrapped in #ifdef PERSISTANT_CLIENTS except a few harmless things in the lexer/parser.


*** 20010312_1 by androsyn
Removed remains of release_dns_client_reply()


*** 20010311_11 by wcampbel
Removed myself from the Hybrid-Team, moved myself down to a contributer


*** 20010311_10 by toot
memory.c needs restart.h (recommit)


*** 20010311_9 by wcampbel
Inglish's Norwegian translation is now fixed and working.


*** 20010311_8 by davidt
- Fix topic for vchans
- Recommitting the following fixes:
  * Tidied up TODO, it had a bunch of stuff in it that had already been done.
  * Multiple ports are now allowed per listen{} block.
    Note that host=""; lines must come before port=123; lines (they apply
    to any port=...; lines following).


*** 20010311_7 by fl_
- This reverts the tree to its state on the 8th

  The main reason for this is to fix klines.. which were broken in a
  hostmask.c commit.. but finding out what was wrong wouldve been
  insane.. the patch is available of what ive changed to restore it
  back with persistant clients (which this removes), and the buggy
  kline stuff..

- We need a stable tree for beta3.. not a buggy one :/


*** 20010311_6 by fl_
- undefine persistant clients by default.. is there a missing 
  messages.tab?
- we need to discuss this before any more commits..


*** 20010311_5 by fl_
- added wildcard checking for remote klines
- upped the minimum non-wildcard chars from 2 to 4.. 


*** 20010311_4 by a1kmm
- Added numeric 20 for "Your ID and key is" so we can have clients read them.


*** 20010311_3 by a1kmm
- Added a flag "persistant=yes" to CONF_CLIENT(auth{} blocks). Without this flag, you cannot become +p.


*** 20010311_2 by a1kmm
- We now expire timed out persistant connections.


*** 20010311_1 by a1kmm
- Got some basic reattaching to work, but it is not finished yet so you may not want to have PERSISTANT_CLIENTS
  defined. We also need to decide what to send on reattach, as well as a nicer way of sending the id/key.


*** 20010310_2 by fl_
- added some checking to make sure glines from other servers have enough
  none wildcard chars.. (gline *@* anyone?)


*** 20010310_1 by a1kmm
- Wrapped the +p and the detach_client stuff in #ifdef PERSISTANT_CLIENTS


*** 20010309_5 by fl_
- added rejection for the post command from unregged clients


*** 20010309_4 by davidt
- Tidied up TODO, it had a bunch of stuff in it that had already been done.


*** 20010309_3 by fl_
- dont allow clearchan from servers.. ick!


*** 20010309_2 by davidt
- oops, apparantly I forgot to commit my multiple-ports-per-listen{} patch.  Note: host= lines must now come before port= lines

*** 20010309_1 by a1kmm
- Some basic support for persistant clients(usermode +p) as well as a few general fixes here and there.
  It is late here so please forgive my bugs which are most probably there.


*** 20010308_3 by toot
removed some more ugly %lu's
memory.c needed restart.h


*** 20010308_2 by androsyn
Moved outofmemory() to memory.c from list.c.  Also updated a few comments
regarding outofmemory().


*** 20010308_1 by androsyn
Removed an #if 0'd relic that was pointing to a function in what was res.c


*** 20010307_9 by jdc
* Lacking list.h include; _free_dlink_node was implicit.



*** 20010307_8 by db
- We had forgotten to send RPL_LISTSTART



*** 20010307_7 by androsyn
More incremental progress on ziplinks.  It will send out CAPAB ZIP if 
compressed = YES in the config file.


*** 20010307_6 by madmax
Netsplits now show client quits as (irc.server.com a.server.split.from.<network>.net)
So clients pick up the split now:
ωνω NetSplit: a.server.on.EFnet.net split from irc.efnow.net [02:44pm]

Also swapped strcpy and strcat for an ircsprintf.


*** 20010307_5 by fl_
- changed the numerics warning..


*** 20010307_4 by fl_
- this fixes clearchan.. we do stuff in a certain order which unfortunately
  means the channel is never really destroyed.. the oper can cycle if they
  want that..


*** 20010307_3 by androsyn
Stuff to get ziplinks support in the config files at least...Adds a 
compressed = YES/NO option to connect {} blocks.


*** 20010307_2 by toot
removed a couple of pointless checks; IsInvisible() on a server
or unknown :P


*** 20010307_1 by toot
/trace wasn't showing the correct Client and Server info


*** 20010306_2 by toot
cast eob message to (int), for prettyness :P


*** 20010306_1 by toot
. ugly %lu in /stats v and  temp tkline removed
. acptr had been renamed to aclient_p, when we wanted target_p.


*** 20010305_5 by androsyn
Fixed vhost= to function properly when modifying it on rehash..


*** 20010305_4 by toot
removed a couple of redundant if's


*** 20010305_3 by androsyn
Changes sptr cptr and acptr to source_p client_p and target_p respectively


*** 20010305_2 by androsyn
That should have been source_p not server_p


*** 20010305_1 by androsyn
Changed cptr  to client_p and sptr to server_p and acptr to target_p
as discussed in #ircd-coders with larne and toot.  These names make a bit
more sense.


*** 20010304_1 by androsyn
We don't need a functional system resolver anymore :)


*** 20010303_2 by wcampbel
Document STATS A


*** 20010303_1 by wcampbel
Typo, thanks for spotting it Martin


*** 20010302_4 by fl_
- added some TS rules to permanent channels..
  if a remote server sends users to a perm channel, we drop our modes,
  and use theirs, else we are really going to break things..

  if they are bursting a perm channel, and we have one, use whoevers
  TS is older..


*** 20010302_3 by fl_
- dont pass received sjoins on for persistant chans, to those not using
  CAP_VCHAN.. do we need another cap?


*** 20010302_2 by davidt
- Reset buf/sjbuf/sjbuf_nh to "" in m_sjoin, so we don't accidentaly
  reuse previous nicks....


*** 20010302_1 by a1kmm
- Fixed a potential buffer overflow where strncat is used incorrectly.


*** 20010301_13 by db
- missing #ifdef USE_SYSLOG on #include
  replaced this for now  /* XXX #ifdef HAVE_SYSLOG_H */
  Should this be in configure?



*** 20010301_12 by lusky
- revved patchlevel to beta2


*** 20010301_11 by fl_
- removed the extra debug message for the numerics, as it shouldve
  been caught now


*** 20010301_10 by fl_
- ok.. did it a different way, we only burst perm channels to those
  who support CAP_VCHAN, as older servers wont time them out


*** 20010301_9 by fl_
- reverted my patch, im gunna do it a different way


*** 20010301_8 by fl_
- this fixes the 403 stuff.. we now actually burst userless channels
  (could help stop desyncs), which stops us sending +b's for non-existant
  channels..

  this doesnt break hyb6, but its revertable if it causes serious problems


*** 20010301_7 by davidt
- Fix for a core on /rehash when removing in-use I lines.


*** 20010301_6 by androsyn
Forgot to commit res.h last night


*** 20010301_5 by androsyn
Adds a /STATS A for listing the current set of DNS servers adns is using.


*** 20010301_4 by androsyn
this lets adns process timeouts correctly.


*** 20010301_3 by db
- can't use mem_frob if NDEBUG is defined



*** 20010301_2 by db
- mem_frob() is not valid if NDEBUG is defined hence it can't be called here



*** 20010301_1 by androsyn
Gets rid of the dns lookup in listener.c it was a dumb idea..if you ask me
:P


*** 20010228_8 by db
- grrr calculate a delta , if its reasonable use it.
  Otherwise, report 0. blah.
  The =proper= fix is to store the TS delta from the svinfo
  into the server struct for that server.



*** 20010228_7 by androsyn
This should fix the /rehash coredump..


*** 20010228_6 by db
- fixed misc I lines/klines so *@* now works again.



*** 20010228_5 by fl_
- put back the 502 numeric (cant change modes for other users)
- put back the warning about servers changing our usermodes

these were commented out.. but I dont see why: noticed by jv


*** 20010228_4 by androsyn
Doh..i'm a tard


*** 20010228_3 by androsyn
Fixed yacc for real this time :)


*** 20010228_2 by androsyn
Makes yacc/bison detection work right.


*** 20010228_1 by androsyn
Well..this fixes that core dump..The problem is now that I lines don't seem
to be working right :/


*** 20010227_3 by ejb
- fixes to make compile on solaris using sunsoft cc work.
  tested compile, and it loads the module fine, but i haven't
  checked that it works any more than that. 


*** 20010227_2 by db
- don't try to use a flag on a NULL pointer



*** 20010227_1 by androsyn
Made IPv6 a configure option


*** 20010226_10 by androsyn
Minor change to the build system so that s_bsd_*.c will always generate
an .o file, but are empty for the loop type you're not using. Makes for
slightly cleaner makefiles.


*** 20010226_9 by fl_
- This fixes EOB timing.. we rely on the remote server to calculate
  the time spent, may be some issues with TS deltas which ill fix later


*** 20010226_8 by androsyn
Half a fix for Sun's CC.


*** 20010226_7 by androsyn
Fixes for Sun's CC. Things actually compile now with it.


*** 20010226_6 by androsyn
Fixed things so that they compile without warning with Sun's CC.
BTW, Sun's CC sucks. 


*** 20010226_5 by ejb
- fix to make ircd_parser.y work
- notes on Solaris compile.



*** 20010226_4 by db
- don't frob memory if NDEBUG is set



*** 20010226_3 by androsyn
memory.h was in the wrong place with MEMDEBUG set.


*** 20010226_2 by androsyn
More updates to adns.  Using the block allocator for struct DNSQuery now.


*** 20010226_1 by androsyn
Minor interface change to adns.  Basically we have the callbacks freeing
memory for the struct DNSQuery in the callbacks.  I should probably modify
this to use the block allocator.


*** 20010225_24 by jdc
* Here we go again.  ;-) Fixes to make /STATS P not show the same
  listening port twice after a /REHASH, and make things all clean
  and happy on BSD:

  listener.c: In function `inetport':
  listener.c:194: invalid lvalue in assignment
  listener.c: In function `find_listener':
  listener.c:247: warning: passing arg 1 of `memcmp' makes pointer from integer without a cast
  listener.c:247: warning: passing arg 2 of `memcmp' makes pointer from integer without a cast




*** 20010225_23 by androsyn
Uncommentted fixed code


*** 20010225_22 by androsyn
Documented listen {} host=".." fix.


*** 20010225_21 by androsyn
Fixed host="ipaddress" in listen {} blocks for IPv6.  


*** 20010225_20 by androsyn
Error condition for inetpton() should be <= 0 :)


*** 20010225_19 by androsyn
Fixed broken /rehash dns


*** 20010225_18 by androsyn
Fixed more weirdness..this was from my half assed attempt at fixing /dns
rehash


*** 20010225_17 by androsyn
Fixed weird dns bug..


*** 20010225_16 by androsyn
Remember that for inetpton() that is <= 0 is an error condition not just ==
0


*** 20010225_15 by androsyn
Without libresolv checks..


*** 20010225_14 by androsyn
Removed libresolv/libnsl checks from configure.in


*** 20010225_13 by androsyn
These are really that last ones for libresolv. Now I just need to figure out how to 
make autoconf not look for libresolv and libnsl


*** 20010225_12 by androsyn
Fixed yet another dependancy on libresolv


*** 20010225_11 by androsyn
Fixed another dependancy of libresolv on solaris


*** 20010225_10 by androsyn
Fixed stupid typo..


*** 20010225_9 by androsyn
Removed inet_aton() calls.  This should be the last things that needs
libresolv on solaris.


*** 20010225_8 by androsyn
Further fixes to listen {} blocks for adns stuff...


*** 20010225_7 by jdc
CVS prior to now would not compile on FreeBSD.  So here are my fixes.
If any of this is wrong, someone please fix it.  This isn't code I
should be playing with in the first place, but it seems to work...

* include/listener.h
    Changed Listener 'addr' def. from struct in_addr to irc_inaddr.
* src/listener.c
    make_listener(): copy_s_addr() needed to be changed due to the
      include/listener.h change.
    inetport(): lsin.sin_addr assignment needed to be changed (used
      memcpy() to be safe; used inet6 stuff as example).
    find_listener(): Changed PIN_ADDR() and IN_ADDR() to &PIN_ADDR()
      and &IN_ADDR().  More importantly, memcmp() logic was backwards I
      think -- result was /REHASH, then /STATS P showing two of the same
      listening ports; changed to (!memcmp()).



*** 20010225_6 by androsyn
Fixed a few minor bugs I introduced...ipv6 vhost listeners almost work. They 
re scribbling over the listener port right now.. I don't think this happens 
for IPv4 but I haven't checked either.


*** 20010225_5 by androsyn
Made listener.c use adns instead of gethostbyaddr() which should kill the
last of the libresolv code.  Also I think I've fixed vhosting for IPv6, but
alas I have not tested this just yet.


*** 20010225_4 by toot
reduced startup_connections_time from 5mins to 1min
surely that's long enough? :)


*** 20010225_3 by androsyn
Forgot a htonl()


*** 20010225_2 by androsyn
Second half of dns rehash fix. This actually works now.



*** 20010225_1 by androsyn
First half of the dns rehash fixes. Also fixed for a case where
a nameserver is 0.0.0.0. We alter the address to be 127.0.0.1 in that
case.


*** 20010224_8 by jdc
Typo a la Riedel (gewijgerd --> geweigerd).



*** 20010224_7 by wcampbel
Spell checked all these files


*** 20010224_6 by wcampbel
Proper credits, added the norwegian translation (currently broken sigh)


*** 20010224_5 by fl_
- Added riedel's ircd-dutch.po translation to the tree, updated makefile


*** 20010224_4 by toot
fixed modules="..."; in ircd.conf


*** 20010224_3 by toot
fixed a little typo in ircd_parser.y with client_exit option


*** 20010224_2 by a1kmm
- Make sure we get the right version of config.h


*** 20010224_1 by a1kmm
- Disable memory debugging for the beta release.


*** 20010223_8 by wcampbel
Added the spanish translation, submitted by ermak and corrected by xfrob
(both from Hybnet)


*** 20010223_7 by a1kmm
- Fixed glines.
- Fixed parse.c so exit_client it is only called once.
- Fixed exit_client so we don't set the client dead until we have sent the contents of the sendq.


*** 20010223_6 by a1kmm
- Removed an assert which simply shouldn't be there.


*** 20010223_5 by wcampbel
Updated my TODO list
Added madmax's cookies proposal


*** 20010223_4 by wcampbel
Xride submitted the Danish translation, set that up in the translations 
Makefile.  Also documented in BUGS that you have to set the msglocale to
standard before trying to update one in use, as it will occasionally dump
core.


*** 20010223_3 by fl_
- we dont need mo_oper(), an !IsOper() check is better :)


*** 20010223_2 by androsyn
Untested module loader for HP-UX using shl_*().  This should get integrated
into the current modules.c, but I didn't feel like messing with autoconf
this morning. If you're gonna use this make sure you hack your Makefile 
to use -lld instead of -ldl


*** 20010223_1 by db
- This appears to be stable under seans little "toy" test cloner.
  I have moved the exit_client code outside of send.c and into parse.c
  for now. Not sure if this is =quite= the right place but I'd like
  to sleep tonight.

  Anyway, a more optimum solution will be to fd_close in dead_socket() I think
  and then mark the fd as -1 .. but I don't want to deal with it tonight.

  Oh, I'm not sure if cptr after handle_command() in parse.c needs to be
  checked as well.




*** 20010222_8 by wcampbel
Fix configure to properly find and set the @RANLIB@ variable.


*** 20010222_7 by fl_
- dont flood limit remote clients..
  in doing this however.. we dont actually need to check if the client is
  flooding or not.. it seems a waste just to generate an error message.
- dont flood limit opers in private, in channels where theyre unopped,
  they shouldnt be given preferential treatment, so limit them with users
- RFC says we dont reply to notices.. if a client is flooding with a
  notice, dont tell them theyre message didnt arrive


*** 20010222_6 by wcampbel
Edited the readme some more


*** 20010222_5 by fl_
- added the +l usermode to the 004 numeric


*** 20010222_4 by wcampbel
Ok, rename complete, swedish.po -> ircd-swedish.po and so on


*** 20010222_3 by wcampbel
Fixed the German translation.  I WILL be renaming things in the repository
as gettext appears to die with 'german' or 'swedish'


*** 20010222_2 by androsyn
I forgot to commit some stuff. Part of the /dns rehash fixes..well half-fix
at least.


*** 20010222_1 by wcampbel
Added the working Croatian translation, and a broken German translation
(I will fix the German one soon) and gave credit where credit is due


*** 20010221_4 by androsyn
Fixed stupid misteak in last commit...


*** 20010221_3 by androsyn
Misc adns cleanups.  Half way to getting /dns rehash working again


*** 20010221_2 by androsyn
Minor fix replacing close() with fd_close()


*** 20010221_1 by db
- flush queues if client is marked dead.



*** 20010220_9 by wcampbel
Updates in the messages stuff


*** 20010220_8 by wcampbel
Updated (and corrected one small glitch in) swedish.po, created the Makefile.in
for it, and added it to autoconf


*** 20010220_7 by wcampbel
Added trbz's Swedish translation


*** 20010220_6 by wcampbel
Revised custom.po, Added the README for the translations.  I'll create
a Makefile (might need help) to install a specific language, and to do 
maintainance on each .po file.  Any contributions will be appreciated


*** 20010220_5 by wcampbel
Directory /cvsroot/ircd-hybrid-7/messages/translations added to the repository


*** 20010220_4 by davidt
- Missed test in src/packet.c, while( <get line from sendq> ) should
  check the client hasn't died before parsing the line..
- Oddness in s_serv.c -- random garbage was being copied into fd_note,
  whilst the correctly copied string was being completely ignored...


*** 20010220_3 by wcampbel
Make one of the define's easier to read


*** 20010220_2 by toot
took out an unneeded if() in m_mode.c


*** 20010220_1 by toot
use find_bchan instead of map_bchan.  it's much quicker.


*** 20010219_1 by wcampbel
Cleaned up an unclear sentence in example.conf, and updated the messages
file.  Someone want to write user docs on the messages stuff?


*** 20010218_2 by wcampbel
ip="..."; in listen {} is inconsistent, like a connect {} host entry, it
can accept both IP's and hostnames, so it should be host="...";
Also we had complaints about needing " " here, while all other ip= lines
do not use the " "


*** 20010218_1 by wcampbel
1.  Update the TODO list
2.  Massive update of the docs for the (hopefully soon) beta2 release.
3.  Made the rsa_respond/Makefile consistent
4.  Cleaned up make rsa_respond from the source root somewhat
5.  make install in doc/ installs the manpage (now that it's reasonably
    up to date) to man8 in the prefix.
6.  Removed the last vestiges of CRYPT_LINK_PASSWORD
7.  Last but not least, added vulture to the credits as a contributer


*** 20010216_7 by androsyn
Fixed /rehash dns finally.  Boy I'm awful lazy these days :P


*** 20010216_6 by db
- ok... MyMalloc() does not memset memory to 0, and we are seeing
  0xdeadbeef errors... sooo I want to see it fail with NULL's at least
  easier to fix then.



*** 20010216_5 by a1kmm
- Reverted db's patch - we must not free I-lines a client is attached to.
- Added some documentation to the functions.
- Added some ugly debug code in case the reason that the reverted patch was needed shows up again, so we
  get more useful cores.


*** 20010216_4 by db
- oops. reporting the wrong things for Klines. fixed.



*** 20010216_3 by db
- cleaned up hostmask.c clear_conf() there is no need to keep
  a separate link list at all
- note register is deprecated or ignored with any modern compiler.



*** 20010216_2 by ejb
- fix for /quote accept -nick flooding


*** 20010216_1 by db
- This should catch all the nasty cases of adding to patricia trie
  and not freeing ConfItem's on failure.



*** 20010215_5 by androsyn
Fixed a few bugs with dline handling...


*** 20010215_4 by db
- stop nnn.nnn.*.* type dlines at the pass...



*** 20010215_3 by a1kmm
- Fixed dserv not to core and to do the linked list right.


*** 20010215_2 by a1kmm
- Fixed dserv to not core, although blockallocator is temporarily broken, so it isn't used now.


*** 20010215_1 by db
- I think this fixes /msg $ and /msg # stuff
- also changed /msg opers@ to use local wallops



*** 20010214_9 by androsyn
Fixed adns to use close() to use fd_close()


*** 20010214_8 by androsyn
The resolver will now actually reread /etc/resolv.conf.  Also note
that this pretty much does a full restart on the resolver.



*** 20010214_7 by wcampbel
Add +l (locops) to the default oper umodes
Fix a typo in example.conf
Document fakename (server hostmasking nonsense) in example.conf


*** 20010214_6 by fl_
- fixes msg $irc.server.. the docs need updating..
  $$irc.server has been reverted to $irc.server to keep compatability
  I need to go shout at my isp so ill fix $# soon :)


*** 20010214_5 by a1kmm
- Made the special case of hostmasks with no wildcards work properly.


*** 20010214_4 by db
- somehow this fix got blown away accidentally...
  puts the right ip into the aconf if hostname happens to be an IP



*** 20010214_3 by a1kmm
- Use memset instead of bzero in an attempt to reduce the number of deprecated function calls.


*** 20010214_2 by toot
. added some CVS Id tags where they were lacking
. removed 'd' from MYINFO.. no more denys
. made some formatting more consistent :P


*** 20010214_1 by a1kmm
- Re-reverted something I accidently reverted - always close all files in your text-editor after cvs
  update!


*** 20010213_7 by a1kmm
- Finally that ConfItem memory leak seems to have gone - we now free ip_ilines and even the associated conf
  items.


*** 20010213_6 by androsyn
Fixed adns for non gcc compilers.



*** 20010213_5 by db
- updated TODO list



*** 20010213_4 by a1kmm
- Slightly better clear_conf code - there was actually a risk of double free before. Still we have that memory
  leak however :(


*** 20010213_3 by db
- don't increment scount unless it was successfully added



*** 20010213_2 by db
- fixed IP in conf when ip is used for host = ""; in connect block
  use inetpton() on given string, if returns 0 use dns... otherwise
  its a valid IP to use. s_conf.c

- open fd to stderr.log, dup it to fd 2 s_bsd.c



*** 20010213_1 by androsyn
Made server hostmasking work again.  Well, at least in theory. 
Added a fakename= option to the connect block for this.


*** 20010212_9 by androsyn
This fixes it properly this time :P


*** 20010212_8 by androsyn
This is the IPV6 half of that fix..




*** 20010212_7 by db
- this fixes the IP showing on /connect for =now= AndroSyn will have
  to tidy this up...



*** 20010212_6 by jdc
- Logic for spoof_notice was backwards.  Oops.



*** 20010212_5 by db
- make it compile at least for now



*** 20010212_4 by androsyn
Free allocated memory from adns. Dumb bugs..


*** 20010212_3 by a1kmm
- Re-added that code to stop malloc() etc... getting in.


*** 20010212_2 by androsyn
adns using stat as a local variable seems to be a dumb idea...


*** 20010212_1 by androsyn
Fixed some brain damage on incoming connections...the code has been 
changed to make it more friendly to ipv6.


*** 20010211_5 by db
- modified logging in adns functions to work with ircd s_log
  bit of a quick hack for now ;-/



*** 20010211_4 by db
- reworked adns to not use fgetc, fprintf and friends, but the ircd
  specific FBFILE library (fileio.h)
- removed duplicated redundant #include "memory.h"



*** 20010211_3 by db
- removed apparent debugging code left in



*** 20010211_2 by a1kmm
- Put deleted hostmask confs on a list so we can free them later. Still leaves some memory leaks somewhere
  in the config(but why?) but it is partway there...


*** 20010211_1 by a1kmm
- Fixed adns to use My* memory functions.


*** 20010210_13 by androsyn
Fixed adns/ to use MyMalloc() instead of malloc()




*** 20010210_12 by a1kmm
- Some general tidyups to help catch memory leaks and other problems, like changing calls to calloc and malloc
  and strdup to MyMalloc, + a few memory leak fixes. Still some more to go, however.


*** 20010210_11 by a1kmm
- Fixed IP I/K lines to work properly, but we still have to put IP I lines and normal I lines on the
  same precedence scheme.


*** 20010210_10 by fl_
- added extra logging for numerics sent to servers.. this should
  be removed once we fix the causes of it (admin only for now)


*** 20010210_9 by a1kmm
- Fixed DLINES - an irc_inaddr is not the same as a sockaddr
- We cannot return from accept_connection without re-selecting the listener or the listener won't work
  properly!


*** 20010210_8 by db
- /rehash should check_klines() !



*** 20010210_7 by wcampbel
Document the permissions bug on /etc/resolv.conf


*** 20010210_6 by fl_
- sendto_realops_flags_oper became sendto_wallops_flags() :)


*** 20010210_5 by jdc
- *Server name* being reported on connect was listener->name, not
  me.name.



*** 20010210_4 by jdc
- Fixed bug where /WHO *, /WHO NICK, and /WHO #chan would not show
  +o or +v clients when opped or +h'd; bug was due to lack-of 
  is_any_op() check alongside MODE_HIDEOPS.
- Changed variable name reference 'oper' to 'server_oper' to avoid
  confusion with chanops.



*** 20010210_3 by db
- the hash table better be cleared as well



*** 20010210_2 by db
- This should fix the pesky asserts once and for all.
  Remember the client struct hasnt' been freed yet, so its cool here.



*** 20010210_1 by a1kmm
- Reverted back to scanning forward in hostmask.c - the idea of scanning backwards and not hashing the string
  seems to take more clockcycles on the average hostname to get everything right than just rehashing the
  string each time, since we have a relatively good hash function(So we have to hash about 5 strings when
  a client connects, but it isn't that bad). And we should also get rid of a few special cases that were
  messing up k-lines and spoofs before.


*** 20010208_8 by wcampbel
Minor update of example.conf


*** 20010208_7 by db
- argh I always test before committing. right? 



*** 20010208_6 by db
- anytime we get a socket connect error, the client should be marked
  with DEAD_SOCKET.. found by vulture.



*** 20010208_5 by db
- this at least prevents exit_client from exiting an already dead client twice.



*** 20010208_4 by db
- if an fd from accept is -1 don't add it ! 



*** 20010208_3 by androsyn
Keeps adns from splattering crud on fd=2


*** 20010208_2 by toot
should use irccmp rather than strcmp when checking
vchan_id


*** 20010208_1 by toot
wasn't checking vchan_id for root channels..


*** 20010207_8 by a1kmm
- That "bogus //" that Hwy changed to /*  shouldn't be there at all - the code is needed for klines to work.


*** 20010207_7 by db
- This fixes testline... find_tkline can be handed a NULL ip from testline.



*** 20010207_6 by wcampbel
More bogus C++ // comments


*** 20010207_5 by wcampbel
Replaced bogus C++ // comment


*** 20010207_4 by wcampbel
Updated the TODO list
kline=yes|no; in the conf controls KILL too


*** 20010207_3 by db
- ok. once a client has exited, any recvq linebufs it has, must be flushed
  else client_dopacket() will try to parse stuff while the client has
  a -1 fd... oops. The old code (before david cleaned it up) swept
  this under the carpet by simply ignoring the buffer if the fd < 0
  Sooo instead exit_client() should flush all recvq linebufs when it
  exits a client. I added a new interface client_flush_input() to linebuf.c
  I don't think client.c should be diddling directly with linebuf_donebuf
  but thats just me.



*** 20010207_2 by db
- one line comments aren't generally useful in fixing bugs.
  THIS fixes the stack smash observed on dead links



*** 20010207_1 by androsyn
This *should* fix the long hostname bug..Untested however


*** 20010206_1 by androsyn
Yup..that fix was okay..


*** 20010205_14 by db
- this fixes a stack smash when a socket goes dead, you CANNOT
  ever try to send more stuff at it, or it goes into a nice nasty
  loop as it tries to send an error to the dead socket...
  There may be a better way of doing this.



*** 20010205_13 by wcampbel
connect { aftype = ipv4|ipv6; }; documented


*** 20010205_12 by db
- temporary fix for adns /rehash cores



*** 20010205_11 by davidt
oops, missed a return

*** 20010205_10 by androsyn
Keeps adns from dumping core on us.  This needs to be fix. 


*** 20010205_9 by androsyn
Fixed a bug with TCP sockets for adns..this would have broken things if
the TCP code every got used :)




*** 20010205_8 by davidt
m_* functions no longer need a return value.. and everything was using it in different ways (returning 0/1/-1 on various different conditions), so it was just a mess..  If we do decide to actually use the return value for something useful, it'd need to change everything anyway, so since that probably won't happen (soon anyway)....

*** 20010205_7 by wcampbel
Print a U or X when printing out gecos {} or shared {} entries
Fix a couple mistakes in the .po


*** 20010205_6 by a1kmm
- Finally got the code to only hash the new parts of the hostname when we try each token. Thanks to
Dianora for the idea.


*** 20010205_5 by androsyn
Missing '&'s are bad for your health and your pointers :P 


*** 20010205_4 by db
- ya ya ya never check in something without testing, esp. when tired.



*** 20010205_3 by db
- IPV6 should not be defined by default



*** 20010205_2 by db
- removed unused variable
- added prototype for now for is_ipv6_address



*** 20010205_1 by androsyn
Fixed bug for IPv6 when displaying the IP address of the incoming
connection.


*** 20010204_17 by androsyn
Shameless self promotion...


*** 20010204_16 by androsyn
Fixed a tyop that prevented s_auth.c from compiling.


*** 20010204_15 by db
- fixed core in hostmask.c add_conf() should check for NULL pointers
- added initial IPV6 specific code



*** 20010204_14 by androsyn
Added hostname length checking. Report error if hostname is longer than
HOSTLEN


*** 20010204_13 by db
- changed code to use a patricia trie for the IP I lines



*** 20010204_12 by ejb
- fixed s_bsd.c for BSD ..


*** 20010204_11 by androsyn
Stupid misnaming bug..


*** 20010204_10 by androsyn
Added ip Iline interface to dline_conf.c


*** 20010204_9 by androsyn
Added a install target


*** 20010204_8 by androsyn
Fixed some clashes with freebsd system headers.


*** 20010204_7 by androsyn
Default aconf->aftype to AF_INET


*** 20010204_6 by androsyn
This is dumb...but oh well :P


*** 20010204_5 by androsyn
Well this is the ADNS stuff.. Please test it throughly. It seems to work
okay but it has not been extenstively tested.  Have fun...




*** 20010204_4 by androsyn
Directory /cvsroot/ircd-hybrid-7/adns added to the repository


*** 20010204_3 by fl_
- we notice the oper when we add a tkline remotely/locally.. (untested)
- dont give the path to our kline.conf in remote klines


*** 20010204_2 by toot
.depend update


*** 20010204_1 by a1kmm
- Better free HostMaskEntries too when we clear_conf


*** 20010203_7 by a1kmm
- 'I' is not the same as 'K'.
- flags is not the same as status.


*** 20010203_6 by a1kmm
- Got rid of mtrie_conf, we now have new hashtable orientated code that should be faster on servers with
lots of k-lines & I-lines etc...


*** 20010203_5 by wcampbel
. make rsa_respond will create a distributable rsa_respond.tar.gz
. Rewrote the rsa_respond README file
. Removed buffer.c and buffer.h from rsa_respond, they were old code,
  needed for rsa_respond.c.  The new genkey/respond programs do not use
  these two files.
. Corrected my spelling in challenge.txt... Do NOT document when you are 
  tired Hwy!


*** 20010203_4 by wcampbel
Documented that ::1 is not a supported IP (reported by me and poptix)


*** 20010203_3 by db
- removed unused parameter in do_who() (chptr) 
- removed duplicate #include "common.h"



*** 20010203_2 by wcampbel
Documented a few more things that were fixed from the TODO file
Updated index.txt


*** 20010203_1 by db
- after re-reading rfc1489 a bit, and the original tortured code
  by avalon I think this is what was meant. I think. I'll have to
  try a h6 server to verify.



*** 20010202_19 by wcampbel
Cleaned up INSTALL a little
Added documentation for the challenge/response system


*** 20010202_18 by a1kmm
- Okay, this is under GPL not LGPL.


*** 20010202_17 by a1kmm
- Reapply Hwys changes I accidentally overwrote before(argc < 3 not argc < 2)
- umask says what you don't want not the default modes!


*** 20010202_16 by a1kmm
- We now call umask before writing the key-files from genkey so they aren't world readable.


*** 20010202_15 by a1kmm
- More secure encryption of private keys that genkey/respond uses.


*** 20010202_14 by davidt
Uhm.  I tested this... and it worked.. but this code couldn't work.. uhm. oops.

*** 20010202_13 by db
- This is a better m_who follows the RFC closer I think



*** 20010202_12 by wcampbel
Fixed an unclear sentence, found by caf@EFnet


*** 20010202_11 by davidt
oops, only link SELECT_SRC in once...

*** 20010202_10 by davidt
- Fix problem with assert() failure in ReadMessageFile...
  It was caused by only generating dependency information for the current
  select method -- if you used kqueue, and the .depend file was for poll,
  changes to s_bsd_kqueue's headers wouldn't recompile it...


*** 20010202_9 by wcampbel
sigh...argc again


*** 20010202_8 by wcampbel
Don't core if we don't have the challenge parameter


*** 20010202_7 by davidt
-I flags should be in CPPFLAGS, not CFLAGS, updated configure to stop warning from make depend

*** 20010202_6 by jdc
- Blah.  Okay, *finally* fixed passwords.  I shouldn't have changed
  the strcmp()s like I did earlier.  The *REAL* bug was that one of
  the sendto_one()'s was sending aconf->passwd, not spasswd.
- Encrypted passwords are still up in the air, but they might work.
  Someone please try them, or work with me regarding it.



*** 20010202_5 by jdc
- Attempt #2...  God this stuff is evil!
- Fixed bug where connect failed when send_password and accept_password
  were not identical.  strcmp aconf->spasswd, not aconf->passwd.
- The above fix might also (havent tested) fix encrypted password links.



*** 20010202_4 by jdc
- Fixed bug where connect failed when send_password and accept_password
  were not identical.  strcmp aconf->spasswd, not aconf->passwd.
- The above fix might also (havent tested) fix encrypted password links.



*** 20010202_3 by wcampbel
m_who fix, not perfect, but it doesn't core now.


*** 20010202_2 by a1kmm
- "mode #channel !vchan [+...]" now works.


*** 20010202_1 by a1kmm
- The challenge command finally works.


*** 20010201_2 by jdc
- Removed initialization from incompatible pointer type warning due
  to line 483.  Forced type as (char *).



*** 20010201_1 by jdc
- module="" directive in modules {} block does not load module on startup.



*** 20010131_3 by davidt
- Fix missing space between parabuf and : in channel.c
- Fix missing if(p_or_n != NOTICE) in m_message.c, allowing an infinite loop
  of +g messages to DoS the server..
- Added caller_id_wait to remove 60 second hardcoded time between +g
  notifications.


*** 20010131_2 by jdc
- Added myself into the TODO list.  Gee, don't I feel special?



*** 20010131_1 by db
- fixed tiny bug that broke /msg $#host.mask messages for opers



*** 20010130_8 by jdc
- Fixed valid_comment() usage (didn't see line 691).  Now #ifndef IPV6 is
  used to get rid of the -Wunused warning.  Someone should fix this
  kludge properly before a final release.



*** 20010130_7 by jdc
- Removed aconf->ip = IN_ADDR(ip); warnings (force unsigned long).
- Commented out valid_comment function (unused so far?).



*** 20010130_6 by davidt
oops, fix core caused by previous change

*** 20010130_5 by davidt
fix userhost for lazylinks

*** 20010130_4 by fl_
- added FLAGS_NOTADMIN and removed as many of the double notices as
  I could.. I might have missed some though :)


*** 20010130_3 by fl_
- changed sendto_realops_flags_opers() -> sendto_wallops_flags()
  it makes much more sense like that :)
- removed an unneeded if() from sendto_wallops_flags()


*** 20010130_2 by wcampbel
Removed "OPERWALL - " from in front of the OPERWALL message...
This may be exerting my opinion...but the two commands do the same damn 
thing, why should they look any different?  Other than "elite-ness", I don't
see any reason why OPERWALL should exist at all.


*** 20010130_1 by a1kmm
- Fixed the memdebug code again, you can't add a void* to a ptr, it is perfectly valid to add an unsigned
long to a ptr however.


*** 20010129_8 by jdc
Typo fix (FLAGS_ADMINS --> FLAGS_ADMIN).



*** 20010129_7 by jdc
Changed all get_client_name() references, respectively, from
TRUE/FALSE to SHOW_IP/HIDE_IP.  Also changed HIDEME to MASK_IP.

Also, forgot to mention this:

src/s_bsd.c and src/s_serv.c were modified earlier to send two
sendto_realops_flags() notices, one for admins (with SHOW_IP)
and one for opers (with HIDE_IP).  This means admins will get
two notices during a connect/disconnect, but I digress.



*** 20010129_6 by jdc
Changed all get_client_name() references, respectively, from
TRUE/FALSE to SHOW_IP/HIDE_IP.  Also changed HIDEME to MASK_IP.



*** 20010129_5 by db
- simplified sendto_realops_flags(FLAGS_ALL... case



*** 20010129_4 by wcampbel
Removed CAPAB DE from the docs


*** 20010129_3 by db
- removed all reference to CAP_DE its GONE GONE GONE yay
  removed modebuf_de pbuf_de etc.



*** 20010129_2 by wcampbel
Minor documentation cleanup


*** 20010129_1 by lusky
revved patchlevel to beta1


*** 20010128_11 by wcampbel
Applied the OpenBSD a.out fix
Someone test this to make sure it still runs right on BSD/Linux/Solaris...


*** 20010128_10 by ejb
OOH
YES YES YES
YES "£$"£*(
YES !!!!!!!
OOOOOOOOH YES.

um
sorry.

- removed sea^H^H^H+d s^U
- removed +d support, as it causes more problems than it solves.


*** 20010128_9 by jdc
msg_hash_table bug (MAX_MSG_HASH+10 vs. MAX_MSG_HASH) seems to be
gone; do some more testing on this one, but it's not showing up
like in hybrid-6.



*** 20010128_8 by jdc
No throttling/"load" check for opers when setting /AWAY.



*** 20010128_7 by jdc
Grumble grumble.  Put the code back in; apparently mIRC and
others use the "feature" to obtain the clients' local IP.
This is needed for backwards compatibility.



*** 20010128_6 by fl_
- dont burst users to the server that the user is on
- removed useless IsOper() check
- this should be the last commit for a while :)


*** 20010128_5 by jdc
Commented out code which returns the actual IP when a user/client
does a USERHOST on itself.  Seems pointless to me.  Return whatever
the server says your host is.



*** 20010128_4 by fl_
- more minor fixes :)


*** 20010128_3 by davidt
Fix kill for certain LL situations...

*** 20010128_2 by fl_
- this renders kill_client() redundant, but basically we werent sending
  kills to every server, which was causing problems with hyb6 as we
  could introduce a nick twice..
- we now use sendto_cap_serv_butone() and sendto_nocap_serv_butone()
- we still use IDs where its possible
- im tired now :P


*** 20010128_1 by davidt
- Fix m_client.c / m_nick.c to mark clients introduced by a lazylink as known
  by that lazylink (caused all kills of lazylink clients to be replaced by
  nickcollision kills, which has the same effect anyway.. weird bug :)
- Fix broken logic in m_kill.c, which caused a core on attempting to kill
  an unknown UID.


*** 20010127_16 by androsyn
Somebody commited an extra int aftype..This backs that change out...


*** 20010127_15 by androsyn
Typo fix in the last vhost= change fixed.


*** 20010127_14 by androsyn
Finally fixed that damn /connect bug with vhosts...Now will somebody else
test it :).


*** 20010127_13 by davidt
oops, check if sptr can send to the channel, not cptr

*** 20010127_12 by fl_
- only reset idle on privmsg, not notice


*** 20010127_11 by fl_
- dont reset idle time from notices.. only privmsg
  I didnt alter notice #channel.. altho I spose we should so its
  consistent..


*** 20010127_10 by davidt
Prevent local users creating fake vchans...


*** 20010127_9 by fl_
- configfileentry -> servinfo


*** 20010127_8 by davidt
Eventually found the weird bug which causes list.c to complain about
users still being on channels when they are freed.
Remove channel from user as well as user from channel in delete_members.


*** 20010127_7 by davidt
We only actually need one buffer here...

*** 20010127_6 by davidt
Remove warning, since it was being displayed when it shouldnt anyway...

*** 20010127_5 by davidt
Fix LLJOIN brokeness for vchans

*** 20010127_4 by toot
. removed a redundant if/else in stats
. added aftype to localClient, which s_serv.c wanted..
  i this is right?
. updated .depend


*** 20010127_3 by androsyn
Fixed vhosts for outgoing connections finally.


*** 20010127_2 by lusky
- fixed some more sol26 compile warnings


*** 20010127_1 by lusky
- removed lex/yacc output
- put socklen_t's back in


*** 20010126_20 by wcampbel
Oops, <dollar>Id:<dollar> in the ChangeLog


*** 20010126_19 by wcampbel
Minor docs cleanup
Cleaned up the formatting of operguide.txt (wouldn't fit properly on an 80
character wide terminal) and added a couple missing :'s to the /quote lines


*** 20010126_18 by db
- removed some wording which not everyone would find funny *sigh*
  Hey, I found it funny but ... it really shouldn't be in the beta.



*** 20010126_17 by db
- updated TODO list



*** 20010126_16 by db
- changed code to send UID's for KILL's when possible.
- changed direct reference to id to ID macro in send.c



*** 20010126_15 by db
- corrected formatting
- added CVS Id string in comments



*** 20010126_14 by db
- rewrote m_kill.c to use kill_client() in send.c noticed I had
  the tests backwards in kill_client()



*** 20010126_13 by wcampbel
Document the requirements
Update the TODO list
Document the restricted auth {} option


*** 20010126_12 by jdc
Cosmetical changes.



*** 20010126_11 by db
- added kill_client() for formatting up a KILL to an uid or nick as needed
  unused function at the moment.

- added send_trim()' sto sendto_one_prefix()



*** 20010126_10 by androsyn
Fixed minor issue of #include ordering...


*** 20010126_9 by androsyn
Fixed stupid /connect bug where hostname was not an IP address.


*** 20010126_8 by jdc
TYES/TNO flipped to make default value for spoof_notice 'yes'.  This
keeps us "compatible" with hybrid-6.
doc/example.conf changed to contain spoof_notice example.



*** 20010126_7 by wcampbel
Update yacc/lex files (is- please remove!)
Do NOT enable IPV6 by default!


*** 20010126_6 by androsyn
Somebody thought it was funny to commit config.h with #define IPV6 1




*** 20010126_5 by jdc
'spoof_notice' variable added to auth {} blocks.  Enables/disables
notification for when a client's host is changed via 'spoof'.



*** 20010126_4 by androsyn
Fixes for identd checking for IPv6.


*** 20010126_3 by androsyn
Fixed compile error for IPv4.


*** 20010126_2 by db
- This fixes odd cores associated with accept code /quit and nick changes...
  ALL references to a client must be removed when it exits!



*** 20010126_1 by ejb
- does this make IPv6 work? let's see.


*** 20010125_15 by wcampbel
Added the mode +g documentation.
Added another user suggestion to the TODO list


*** 20010125_14 by androsyn


*** 20010125_13 by db
- allow /away to take an /away off at any time, pace other /away
- do not reply to a notice with a notice!! in +g mode



*** 20010125_12 by db
- cleaned up some logging that was just plain wrong
  and changed references to c/n's to "connect blocks"



*** 20010125_11 by fl_
- removed a fixed bug from bugs..
- till someone decides what the hell we're doing with stats p and shide,
  we show users the reply..  I dont like the idea of noticing all opers..
  frankly, itd get annoying, and the MOTD usually gives oper nicks/chans
  anyway, so..


*** 20010125_10 by fl_
- opers shouldnt see IPs of servers connecting.. show them MASK_IP
  instead


*** 20010125_9 by db
- replaced confusing host with name, its a server name not a DNS host name



*** 20010125_8 by androsyn
Fixes for ident when compiled for IPv6


*** 20010125_7 by androsyn
Fixed ircd from complaining about ':' in hostnames on connect.  I don't know
if we want this to be on just for IPv6, but its on for IPv4 as well.



*** 20010125_6 by db
- sendto_channel_remote_prefix() was using sendto_one when it
  should have been using send_message() this caused it to nicely core
  on #%s%s%s... as sendto_one() is varargs unlike send_message()
  This probably also explains some odd bugs cropping up with uids..



*** 20010125_5 by androsyn
Fixed ident checking for IPv4.  Ident *may* work for IPv6 as well, but don't
count on it


*** 20010125_4 by ejb
- some fixes for ipv4


*** 20010125_3 by ejb
- fix to prevent coring on IPv4 connections.


*** 20010125_2 by db
- fixed restricted auth blocks works the same as it does in h6 for now
- fixed core on /squit *oops*



*** 20010125_1 by db
  ConfItem->name is what should be used for server names
  fixing that caused a cascade of other bugs to show up.. neato

- first off, added numeric for RESTRICTED numeric.h, messages.tab
- added notification of restricted mode to s_user.c
- free and zero spasswd in free_conf() s_conf.c
- conf_add_server() should return an int, modifed s_conf.c s_conf.h
  if it fails, it should also log() and not free any given aconf,
  thats up to the caller
- fix ircd_parse.y to NOT ignore the result of conf_add_server 
  and to free etc. whatever on errors



*** 20010124_10 by wcampbel
Diane's fix for the connect {} in the conf


*** 20010124_9 by wcampbel
Added an updated operguide.txt from Riedel and added Riedel's auth specific
motd suggestion to TODO


*** 20010124_8 by db
- don't allow /accept server. Redundant check in client.c



*** 20010124_7 by davidt
IPv6 patch, v2


*** 20010124_6 by fl_
- androsyn's ipv6 patch :)


*** 20010124_5 by fl_
- removed a remote rate limit in lusers.. this should only be done
  locally..
- if shide is on, we always report theres 1 server


*** 20010124_4 by wcampbel
Ran all the docs through ispell


*** 20010124_3 by db
- partially added in "restricted=yes/no" in auth blocks
  this is the old little i line support. Needs code in channel.c in set_mode()
- added code to use crypt() in server passwords depending on
  encrypted=yes/no flag in connect block



*** 20010124_2 by db
- This code will need to be revisted for IPv6, but it at least works now.



*** 20010124_1 by db
- m_whowas.c was referencing ConfigFileEntry intead of ServerInfo
  causing a core. oops.
- cleaned up check_server() in s_serv.c, this is probably why
  irc.efnow.net had connect problems.



*** 20010123_4 by wcampbel
Fixed spelling errors (Noticed by Jonathan Roes)


*** 20010123_3 by db
- removed the loop unrolling ... made it hard to read, also hid a bug
  and loop unrolling is for the compiler to do.
- added no_hack_ops in serverinfo block, once set it will not
  allow anyone to hack ops from your server. no way, no how.
  


*** 20010123_2 by ejb
- remove some remanants of splitcode


*** 20010123_1 by db
- this fixes paul's /whois core. basically, network_name, network_desc
  moved from ConfigFileEntry to ServerInfo. These two modules weren't
  changed somehow to use the new structs. *oops*



*** 20010122_8 by wcampbel
Fixed the off by 1 error in the syntax error in the conf notice


*** 20010122_7 by ejb
- initial commit of androsyn's ipv6 code, hacked up so it compiles. 
  it accepts a connection, but doesn't get further than the initial
  connection, seems an fd is being weirded somewhere.


*** 20010122_6 by fl_
- fixes opers@server and ident%host@server..
- I didnt add users@server, as we if people really want it, they can
  use notice $server..


*** 20010122_5 by fl_
- documented the double notice "feature".. IMO admins can live with
  it, it should be the least of their worries..


*** 20010122_4 by db
- just tidy ups while debugging the accept core



*** 20010122_3 by toot
did it again :P


*** 20010122_2 by toot
missed a bit


*** 20010122_1 by toot
fixed formatting shite in /time and EOB message


*** 20010121_12 by wcampbel
Changed some debugging code logging to L_NOTICE to L_DEBUG


*** 20010121_11 by lusky
- removed XOPEN_SOURCE defines.  If you REALLY need these, it needs to
  be detected by autoconf and specified in the CFLAGS--XOPEN_SOURCE *must*
  be defined before you parse any system includes.
- fixed a couple of pedantic compile warnings, there are still more.


*** 20010121_10 by wcampbel
Updated the docs to be with the present status of the conf parser.
Also noted a few minor bugs and issues into the TODO file


*** 20010121_9 by db
- fixed virtual host 



*** 20010121_8 by db
- can we remove these files, pulease? 



*** 20010121_7 by spookey
 - rehash dns on full rehash


*** 20010121_6 by db
- removed some unused definitions notably NONL was not used due to 
  adrians new line parse code.
- added gline_exempt to parser, not fully implemented, but europe efnet
  want support for it.



*** 20010121_5 by davidt
updated depend, removed unused 'serverMask' from struct Channel (lazyLinksChannelExists is what everything should (and does) use....

*** 20010121_4 by toot
changed the default kick msg to the nickname of who's
getting kicked, rather than the kicker's..
this makes chanmode +a a little more effective


*** 20010121_3 by davidt
- Various fixes to sjoin..
  The only one I can remember is "MODE #chan +h halfops" wasn't being sent..
  I need a new memory.


*** 20010121_2 by davidt
Missing space in parabuf_hops_id, caused desyncs/error messages and other bad things

*** 20010121_1 by davidt
Send KILL for unknown IDs, not an SQUIT

*** 20010120_17 by wcampbel
Updated TODO a little


*** 20010120_16 by wcampbel
Bug 1 is partially fixed and shouldn't be publicized


*** 20010120_15 by davidt
- Change "%s: %s" to "%s :%s" to fix remote klines


*** 20010120_14 by fl_
- ambiguous messages are bloody annoying..


*** 20010120_13 by davidt
Re-enable the warnings for servers sending us numerics, it shouldn't happen [except 'Register First' numerics, when we send a old server a NOTICE AUTH :*** ... message whilest it's connecting to us], and they indicate bugs..

*** 20010120_12 by davidt
Argh.  argh. always test compile something, no matter how simple it is....

*** 20010120_11 by db
- fixed memory leak in new listen {} code
- added max_clients = in serverinfo block



*** 20010120_10 by davidt
Fix silly warning

*** 20010120_9 by fl_
- the sjoin part to the vchan bug.. altho its still possible to make
  fake vchans if youre timing is right :/


*** 20010120_8 by davidt
- Tidy up m_part.c (merge vchan/nonvchan stuff into the same code, so we
  aren't duplicating stuff everywhere)
- Make sure ##vchannel_1234 has a TS of 1234 when we create it with CJOIN,
  fl- is doing the same for SJOIN i think :)


*** 20010120_7 by toot
fixed compile error with gettext..  needed config.h included before
the #ifdef..


*** 20010120_6 by toot
fixed a compile warning
removed an old hacky #define which is fixed better now


*** 20010120_5 by db
- removed a totally useless function.. 
  add_listener() is now called directly from the parser.. no need to
  through gyrations. *BLOAT*
  This cleans up the parser a bit more as well.



*** 20010120_4 by db
- removed CONF_ADMIN dumb dumb dumb, now its just AdminInfo struct
  


*** 20010120_3 by db
- removed CONF_OPS from s_conf.h , its all CONF_OPERATOR now,
  removed CONF_LOCOP while at it.



*** 20010120_2 by db
- updated new lex.yy.c y.tab.c y.tab.h



*** 20010120_1 by db
- changed ConfigFileEntry.hub to ServerInfo.hub
- removed CONF_ME (ick) no more ConfItem for "me" its all in 
  one ServerInfo struct now.
- modified parser to use ServerInfo struct
- I couldn't stand it any more. sorry.



*** 20010119_9 by adrian


* Kill the POLLREADFLAGS/POLLWRITEFLAGS/POLLERRORS gunk. God I hated
  that

* replace it with something that makes a tad more sense-
  - check all the various flags on return from poll() to catch all IO
    types. Yes, all the IO types will be defined in most useful OSes
    even if it only pays attention to one of them
  - define POLLRDFLAGS as POLLIN and POLLWRFLAGS as POLLOUT for older
    broken linux boxen



*** 20010119_8 by db
- just a spelling mistake in a comment, but I couldn't take it any more!
  "automaticly"



*** 20010119_7 by adrian


&& != &

*sigh* commiting whilst sick.. :)



*** 20010119_6 by adrian


use the delay value when calling select(), rather than my hard-coded
value of '1'.



*** 20010119_5 by adrian


&& != || :)



*** 20010119_4 by adrian


Initial pass at the select code rewrite.

* it isn't multilist like the poll code. that would be kind of stupid
  considering that the fd set size is a function of the maximum open fd,
  rather than the number of fds in a "set".

* for some reason the compiler on my laptop is smoking heavy crack with
  hybrid-7 now. It seems to work, but debugging shows a lot of gremlins.
  I'll try it on my -stable box now that I'm back online and fix any
  last minute bugs.



*** 20010119_3 by ejb
- fixed placement of libintl.h in ircd.c/numeric.c


*** 20010119_2 by ejb
- typo in readme.vms
- fix logging in m_kill.c


*** 20010119_1 by db
- committed androsyn' fix for m_message.c non ops should not be able to
  message @#

- cleaned up m_kill.c a bit I hope... users should see just kill reasons.



*** 20010118_20 by db
- fixed warped logic in m_stats.c, didn't allow stats L of anything



*** 20010118_19 by db
- made buffer smaller at the suggestion of bysin, earlier syslogs could overflow


*** 20010118_18 by wcampbel
Updated my TODO list


*** 20010118_17 by wcampbel
Committed AndroSyn's fixed dline_conf.c


*** 20010118_16 by db
- added /stats K for IP and D lines as done by androsyn
- corrected format bug in send.c found by bysin



*** 20010118_15 by wcampbel
Updated my TODO list (sorry for the extra commit, working in multiple 
trees here)


*** 20010118_14 by wcampbel
Updated .depend's


*** 20010118_13 by db
- removed e_line_opers_only f_line_opers_only etc.
  updated parser



*** 20010118_12 by wcampbel
Misc documentation fixes


*** 20010118_11 by db
- initial commit of patricia code a decent trie for dlines/ip klines etc.
  work done by androsyn...



*** 20010118_10 by wcampbel
Removed references to STATS/STATS p/LINKS notices in the general block


*** 20010118_9 by db
- committed new y.tab.c lex.yy.c



*** 20010118_8 by db
- removed links_notice stats_notice whois_notice from conf, these
  are handled by hooks now.



*** 20010118_7 by davidt
Reorder headers in modules/m_motd.c to fix compile error on linux

*** 20010118_6 by davidt
Fixes to m_message.c for lazylinks
Make send.c reentrant, to fix problems with calling client_burst_if_needed
from inside various sendto_* functions.


*** 20010118_5 by ejb
- oops, better make it compile on unix too..


*** 20010118_4 by ejb
- fix typoes in README.VMS
- now, src/* should compile fine on VMS with DECC compiler (with the exception
  of res.c and s_bsd_select.c)


*** 20010118_3 by ejb
- some more fixes for VMS CC.


*** 20010118_2 by ejb
- added README.VMS and make.com
- minor compile for for VMX.


*** 20010118_1 by ejb
- start of VMS port .. doesn't work yet, we need
  - res.c to use BIND8 (VMS does not support BIND4 compatibility)
  - s_bsd_select.c to work
- include the output of yacc/bison in the distribution, for people
  without yacc/lex (including VMS ..)


*** 20010117_14 by db
- fixed /nick changes so they are removed from accept lists of
  any client that happens to have that nick on its accept list.
  This stops someone from tracking nick changes using /accept *

- discovered bug in del_all_accepts()

- renamed misnomer in prototypes



*** 20010117_13 by fl_
- shouldnt really leave debug code in when I commit stuff..


*** 20010117_12 by fl_
- removed the last occurences of sendto_local_opers, replaced with
  sendto_realops_flags_opers().. ta hwy ;)


*** 20010117_11 by wcampbel
1. Updated documentation
2. Added 'locops' to the oper only umodes in the conf parser
3. Updated the oper_flags_as_string() function (which will be used again
   once the ability to specify usermodes set by default in an oper block
   is added in (NOTE:  if you add to this function, watch the buffer size)


*** 20010117_10 by fl_
- you can now specify a path in /modload and have it work :)


*** 20010117_9 by fl_
- im tired.


*** 20010117_8 by fl_
- speaking of documentation..


*** 20010117_7 by fl_
- added +l for locops
- removed sendto_local_opers, replaced it with sendto_realops_flags_opers
- therell be summat else.. I should really document it too..


*** 20010117_6 by davidt
Fixed format bug found by bysin in ts_warn.


*** 20010117_5 by davidt
Fix /rehash of listen{}; blocks.
We still keep old listeners around until all clients 'using' them quit.
Currently s_user.c refers to localClient->listener, nothing else seems to
need it.


*** 20010117_4 by fl_
- fixed a bug toyota found with +v not showing up in /names on anon chans


*** 20010117_3 by db
- ping time out should use %d not %lu, cast it to int



*** 20010117_2 by ejb
- fix problem with hooks, need init_hooks() *before* load_all_modules().


*** 20010117_1 by toot
fixed timestamp in ircd.log


*** 20010116_8 by ejb
- another possible fix


*** 20010116_7 by ejb
- se ebelow


*** 20010116_6 by ejb
- added hook_init, set hooks to zero at startup


*** 20010116_5 by wcampbel
Fixed a compiler warning on Solaris


*** 20010116_4 by ejb
- commit links_notice.c


*** 20010116_3 by db
- reverted sprintf_irc.c
  The entire point of sprintf_irc is to be much faster than sprintf
  not to be a complete replacement for it. Treat it as another function
  entirely that has a similar name.



*** 20010116_2 by wcampbel
Updated .depend's


*** 20010116_1 by db
- fix to check_pings, this probably explains some of the odd cores...
  ptr->next is corrupt at times after an exit_client
- tidied up the comm_open() comm_accep() error handling



*** 20010115_11 by ejb
- added links_notice.so


*** 20010115_10 by fl_
- removed an unneeded if()


*** 20010115_9 by fl_
- fixes to not show server IPs in /links to opers


*** 20010115_8 by db
- This fixes one of the nasty assert errors. comm_open() and comm_accept()
  were both returning ENFILE instead of -1, which happens to be 23.. This
  was seen as a valid fd. This was obviously quite wrong. (s_bsd.c)

- removed numerous debugging code in other files.



*** 20010115_7 by ejb
- slight cleanup to modrestart.


*** 20010115_6 by ejb
- finished stats_notice.so


*** 20010115_5 by ejb
- don't let people flood by accepting them more than once.


*** 20010115_4 by ejb
- initial stats_notice.so, not finished yet.


*** 20010115_3 by wcampbel
And the docs too


*** 20010115_2 by wcampbel
Committed a bug fixed mkpasswd.c (also generates a more secure MD5 salt)


*** 20010115_1 by ejb
- added hook support for modules
  only has one hook so far, doing_whois, which is used for
  whois_notice.so (in contrib).



*** 20010114_2 by fl_
- documented /modrestart


*** 20010114_1 by fl_
- we now have a fully working, unobtrusive modrestart command


*** 20010113_2 by fl_
- added the beginnings of a modrestart command
  be warned:
  this command will atm generate about (roughly) 120 notices telling you
  which have been unloaded and which have been reloaded, but im tired
  and gunna finish it tomorrow
- because of that I didnt document it :), thatll come tomorrow


*** 20010113_1 by lusky
test commit


*** 20010112_2 by davidt
Add channel name to bogus TS message

*** 20010112_1 by a1kmm
- Made some minor modifications to help catch bugs like frobbing the blockalloced stuff.


*** 20010111_13 by ejb
- possible fix for uint32_t problem


*** 20010111_12 by a1kmm
- Do not show the blocks 0s old(like the ones from sendto_one!) so we don't get in a loop.


*** 20010111_11 by a1kmm
- We now support %nu and %0nu (sort of, they are equivalent) in sprintf_irc.


*** 20010111_10 by davidt
report errors freeing localClient too

*** 20010111_9 by a1kmm
- Fixed a bug where we frob and then use something.
- Initialise the last to NULL, since we don't MemSet...


*** 20010111_8 by a1kmm
- Fixed the blockallocator more, it looks like a double free is still there, however.


*** 20010111_7 by a1kmm
- Fixed DNS to work(and leak :( ) again.


*** 20010111_6 by a1kmm
- Fixed dependencies and ensure we never mix debug and non-debug BlockHeap code.


*** 20010111_5 by a1kmm
fixed a minor bug in the block free debugging code.


*** 20010111_4 by a1kmm
- Added block allocator memory debugging.
- Fixed MyRealloc()
- Fixed resolver back.


*** 20010111_3 by a1kmm
- Fixed some memory leaks and some potential buffer overflows and some compiletime warnings.


*** 20010111_2 by a1kmm
Cleaned up some of the memory leaks - nothing seems to leak from the parser or the lexer, but there still
are leaks on rehash.


*** 20010111_1 by a1kmm
Improved memory debugging so it actually works.


*** 20010110_5 by db
- this removes the last remnant of bogus ban removal code..
  this should be done using another cleaner mechanism. blah.
- cleaned up mtrie_conf.c slightly 



*** 20010110_4 by wcampbel
Removed a reference to md5mkpasswd


*** 20010110_3 by db
- first pass at cleaning up mtrie_conf.c



*** 20010110_2 by wcampbel
Added the documentation for the new mkpasswd


*** 20010110_1 by db
- cleanups to client.c and channel.c
  removed unnecessary function call, reformatted some code blocks
  removed unused variable 



*** 20010109_9 by wcampbel
Make clean and distclean descend into iauth and contrib


*** 20010109_8 by db
- unnecessary loop removed for now



*** 20010109_7 by toot
removed old NULL_POINTER_NOT_ZERO #defines


*** 20010109_6 by db
- removed unneeded space in parse.c, do_numeric() this caused
  remote numerics to show up with an obvious extra space.

  due to this -> ircsprintf(t," :%s", parv[parc-1]);



*** 20010109_5 by wcampbel
We now show incomplete (unknown) connections in TRACE to opers


*** 20010109_4 by wcampbel
All of the variables are shown in INFO now (except for oper_only_umodes)


*** 20010109_3 by wcampbel
1. Some doc cleanup
2. Added some more variables to INFO...When I'm done, I will alphabetize 
   them...right now...they are NOT in any semblence of order


*** 20010109_2 by db
- fixed backwards confusing if's on fd 
- make sure CLIENT_EXITED is returned in s_user.c



*** 20010109_1 by wcampbel
Sending PING :<any text> should return 
:<server> PONG <server> :<same text sent in> NOT
:<server> PONG <server> :cptr->name


*** 20010108_16 by wcampbel
Fixed the .depend's...We'll get a couple error messages when we run
make depend now, but at least system libs (rsa.h) in /usr/local/lib
on FreeBSD will not be included in the .depend's.  


*** 20010108_15 by wcampbel
Minor fix of a NOTICE in opme


*** 20010108_14 by toot
put the DLine notices back in..


*** 20010108_13 by db
- removed two more #ifdef's from config.h



*** 20010108_12 by fl_
- guess we werent meant to make that change then, reverted it, it was
   coring the ircd even worse


*** 20010108_11 by wcampbel
Dependencies updated


*** 20010108_10 by fl_
- changed an -1 < to 0 > which should fix a core..


*** 20010108_9 by fl_
- commited dianes fix, modified slightly :)


*** 20010108_8 by db
- don't assume a client is only listed once in the request_list,
  there might be a forward as well as reverse pending in the same list.
  Hope this fixes the assert() bug
- rewrote delete_resolver_queries to do the search and removal of
  clients in one step instead of calling rem_request.



*** 20010108_7 by wcampbel
Removed my md5mkpasswd and added in a replacement mkpasswd that can (if
the system supports it) generate both MD5 and DES based passwords, more docs
will be coming...use ./mkpasswd -h to see the usage


*** 20010108_6 by db
- don't show real ip's of any hosts to non admins in m_server



*** 20010108_5 by db
- added FLAGS_DRONE to ALL_UMODES



*** 20010108_4 by wcampbel
Added action=silent; to gecos blocks, like old X:...:2


*** 20010108_3 by db
- dlinked s_auth.c
- in doing so found a nasty bug in s_bsd_poll.c where it would "walk"
  over previous word to pollfds since a negative index was used... oops
- ircdauth.c will need some re-writes



*** 20010108_2 by madmax
added FLAGS_DRONE to OPER_UMODES for +e


*** 20010108_1 by toot
fixed a memleak dianora found, when reading modules from the config


*** 20010107_8 by toot
expire_gline/tklines wasn't removing more than 1 entry at a time


*** 20010107_7 by db
- auth poll list did not need to be global... 
  ircdauth.c references it atm, #if 0 for now... we'll have to rethink
  how to do this.
- struct AuthRequest had a now unused index 



*** 20010107_6 by db
- removed unused variable in m_kill.c
- resolved global shadowing in send.c
- ensure any client being identd' is removed by exit_client()
- i before e, except after c (spelling mistake in messages.tab)



*** 20010107_5 by db
- this fixes an assert() failure if a client exits before DNS has completed
  We forgot to delete_resolver_queries() in exit_client() in client.c

- I rewrote res.c to use dlink's instead of home grown link list code.



*** 20010107_4 by fl_
- removed unused variable


*** 20010107_3 by db
- client.c check_klines() was referencing bad ptr's due to the exit client
  this is why it wasn't klining more than one client at a time. oops.

- fixed m_kill so user just see's a "Disconnected" message instead of
  the inflammatory "killed by oper message" (as per suggestion of 
  David Harmlein) *sigh* its sad we cannot have more oper accountability
  to users, however, a significant proportion of users are proving to
  be very nasty lusers....  



*** 20010107_2 by fl_
- removed a fixed bug from BUGS file..


*** 20010107_1 by fl_
- documented issues with modunload, that we cant realistically fix..


*** 20010106_32 by db
- forgot a ':' in the notice telling chanops about an attempted kick
  by a halfop. oops



*** 20010106_31 by ejb
- initial start on INVARIANTS support.


*** 20010106_30 by db
- removed quoting code from the k/d parser... the k/d lines in that
  file must never be generated by humans any more... and our /kline
  code ensures no bogus # in the middle of the file.



*** 20010106_29 by db
- removed a major memory leak I introduced. *sigh*
  I had forgotten yylval.string is memory duplicated already in the lexer.
- also removed a rule no longer used  (leaf_block)



*** 20010106_28 by davidt
Sigh, I was right.. fix %@+#chan stuff

*** 20010106_27 by davidt
Fixes for lazylinks kill
Fixes for privmsg/notice for vchans
Fixed some odd stuff in set_channel_mode that was wrong..
and i'm sure i probably broke something, since it's 3:30am.. *sigh*


*** 20010106_26 by wcampbel
Added some more conf variables to INFO


*** 20010106_25 by db
- added missing prototype for sendto_one_prefix, prettied the code slightly



*** 20010106_24 by wcampbel
Removed whois_notice and topic_uh from the ConfigFileEntry struct, one no
longer exists, the other is always enabled, neither variable is used 
ANYWHERE in the source, more bloat...


*** 20010106_23 by wcampbel
Numerous documentation cleanups


*** 20010106_22 by fl_
- dont warn about numerics sent to us from servers
  theyre gunna be unavoidable with lazylinks and nick collides..


*** 20010106_21 by fl_
- added logging, amongst other things to the contrib stuff


*** 20010106_20 by fl_
- fix the compile warning


*** 20010106_19 by davidt
Yet another lazylinks fix.  Prevent a lazyleaf introducing other servers, even if it has a matching hub_mask...

*** 20010106_18 by db
- fixed leaf server code, please read comments in m_server.c
- removed leaf{} block, its really unnecessary read above



*** 20010106_17 by davidt
Fix m_whois for lazyleafs -- hubs were asking leafs about unknown people

*** 20010106_16 by davidt
Oops, sorry, discovered the lazylinks code moved to m_server.c, but
slightly broken. Fixed it, and removed my duplicate code...


*** 20010106_15 by davidt
Fix for changing hub at runtime with active lazylinks

*** 20010106_14 by davidt
Uh.  what happened to check_server?
Restored the lazylink code..


*** 20010106_13 by fl_
- fix for user passwords


*** 20010106_12 by fl_
- removed some excess code I left


*** 20010106_11 by fl_
- added an IsServer() check in parse.c
- split up three identical error messages in m_server.c, so you knew
  which one youre getting
- fixes for jupe/opme


*** 20010106_10 by toot
put quiet_on_ban in example.conf


*** 20010106_9 by db
- full prefix is needed for JOIN



*** 20010106_8 by fl_
- didnt know we had a whois_wait.. which was set too high anyway so its
  now 1 (same as hyb6?)


*** 20010106_7 by fl_
- small fix of an if()


*** 20010106_6 by fl_
- fixes and added rate limiting to remote whois (whois nick nick)


*** 20010106_5 by toot
it doesn't break them :P  a missing blank line hardly matters


*** 20010106_4 by fl_
- we always need a local users reply, it breaks clients not to have one,
  we just spoof it as the global reply


*** 20010106_3 by ejb
- added m_opme.c
- updated README


*** 20010106_2 by a1kmm
- Added examples of leaf{}s to the example config file.


*** 20010106_1 by ejb
- fix IDs being set to random shit.


*** 20010105_53 by db
- added m_nickinfo, /quote nickinfo nick
  will give back its ID and tsinfo for developers



*** 20010105_52 by a1kmm
- Adding dserv to contrib, as an example of services that could be used so we can consider services
  compatibility etc...


*** 20010105_51 by a1kmm
Directory /cvsroot/ircd-hybrid-7/contrib/dserv/inc added to the repository


*** 20010105_50 by a1kmm
Directory /cvsroot/ircd-hybrid-7/contrib/dserv added to the repository


*** 20010105_49 by a1kmm
- Removed debug code I accidentally commited.


*** 20010105_48 by a1kmm
- Cleaned up m_server a bit to squit the right client on error.
- We now support a leaf{} block.


*** 20010105_47 by ejb
- fix IDs for parse()
- added sendto_channel_remote_prefix()
- make part use it.


*** 20010105_46 by davidt
sptr vs cptr, jeez, that was hard to figure out.

*** 20010105_45 by ejb
- remove hash debugging code


*** 20010105_44 by ejb
- make remote users actually get their ID set..


*** 20010105_43 by toot
dont show connection count in /stats u with shide


*** 20010105_42 by ejb
- dont ever put the nick into the ID field.


*** 20010105_41 by toot
no reason to block remote /whois now


*** 20010105_40 by davidt
LazyLink initial nick collsion stuff I did earlier..


*** 20010105_39 by ejb
- fix some more IDs stuff.


*** 20010105_38 by ejb
- fix parse.c format error


*** 20010105_37 by ejb
- finally fixed bug with IDs killing remote users.


*** 20010105_36 by a1kmm
Don't try and DNS resolve ConfItems with wildcards in them.


*** 20010105_35 by db
- added umode +e , requested by pryzm.. She wants a specialized
  +c connect monitor for watching for drones... rather than modify
  +c to give her the information she wants, I've added +e... 
  Possibly only useful to pryzm *sigh*



*** 20010105_34 by toot
. put quiet_on_ban option back in
. got rid of ircd.c compile warning


*** 20010105_33 by toot
fixed vchans for /knock.. still needs to send a notice to remote
chan members though


*** 20010105_32 by db
- This finally fixes host server masks.. though the match loop in here
  probably should move into s_conf.c



*** 20010105_31 by wcampbel
Updated .depend's WITHOUT -DOPENSSL


*** 20010105_30 by cosine
another DEBUGMODE bandaid


*** 20010105_29 by cosine
minor fix for DEBUGMODE #ifdef


*** 20010105_28 by ejb
- remove ID debugging code, fix.


*** 20010105_27 by ejb
- fixed IDs (removed USE_IDS, why was this added?)


*** 20010105_26 by toot
set a default knock_delay if its nto in ircd.conf


*** 20010105_25 by db
- you can't safely re-use bitmasks!



*** 20010105_24 by db
- removed BLOAT again add_hub_or_leaf was not necessary with
  new conf format, only with old.
- aconf->name is NAME of server only not hostname not IP but the
  actual name of the server on the net. switched them around in HUB/LEAF code



*** 20010105_23 by toot
. changed some ugly %lu formating back to %d (caused compile warnings before)
. use ircd.conf knock_delay instead of hard-coded 30 seconds, for m_knock


*** 20010105_22 by toot
. made +a umode propagate and admins can -a/+a themselves too, again.
  everything except /whois uses the conf flags as a check, rather than the umode.
. for local connects, always show idle time if shide is off, and always show opers,
  and show your Own idle time.


*** 20010105_21 by wcampbel
Document the usermode 'drone' '+e' and add support in oper_only_umodes
for it.


*** 20010105_20 by wcampbel
Removed references to HASH in opers.txt, and added README.HASH containing
the old HASH documentation


*** 20010105_19 by toot
don't show the local user count if it's just lies, cause of shide
skip it instead


*** 20010105_18 by toot
it's okay to show the Total server count with shide on


*** 20010105_17 by toot
updated s_conf.c
CVS was playing tricks on me :)


*** 20010105_16 by toot
updated opers.txt


*** 20010105_15 by toot
. took out -pedantic compile flag
. put conf_add_hub_or_leaf() back in for now, cause ircd_parser.y needs it
. use parse() to check param counts for m_client! :)
. added /modreload, (modunload and modload in one)


*** 20010105_14 by a1kmm
- Fixed H and L lines.


*** 20010105_13 by db
- removed more BLOAT conf_add_hub_or_leaf() is now gone.



*** 20010105_12 by db
- removed obsolete Qline struct



*** 20010105_11 by db
- fixed m_jupe.c so it will work without coring.

- fixed a possible nasty core in client.c, its possible a client
  will be on the unknown_list and be exited there, without being
  on a linklist... it will promptly core the server. oops.
  since it has no prev next pointers.

- patched m_hash.c so it will compile. its not very useful ATM




*** 20010105_10 by a1kmm
Separate C/N structures no longer exist, only one with status CONF_SERVER.


*** 20010105_9 by db
- fixed m_jupe.c so it works now. /squit jupe when done



*** 20010105_8 by spookey
 - adds match string to modlist


*** 20010105_7 by spookey
 - fixes compile warning


*** 20010105_6 by spookey
 - fixes core in m_pass (const char* not char*)
 - removes /usr/local/include/rsa.h from .depend (why was this here?)


*** 20010105_5 by db
- never commit until you have done a compile test. duh.



*** 20010105_4 by fl_
- remote connects are giving wallops properly, this should fix it


*** 20010105_3 by db
- in the aop case, it was trying to send an UID for a server
  missing IsServer(sptr) ? sptr->name :sptr->user->id 

- started adding umode +e code to watch possible drones



*** 20010105_2 by fl_
- we should sync oplists after that too..


*** 20010105_1 by fl_
- allow halfops to -h themselves


*** 20010104_40 by wcampbel
Moved m_hash.c from modules to contrib (it hasn't been installed for a while)
Also updated .depend's and documented the 3 modules we have in contrib


*** 20010104_39 by davidt
where'd this little irc_strncpy go....

*** 20010104_38 by davidt
oops, the rest of the sjoin fixes, along with a fix for not updating the
global client count.


*** 20010104_37 by a1kmm
Added check that parc is not too small for m_client.


*** 20010104_36 by davidt
Fix sjoin for +a channels, again

*** 20010104_35 by ejb
- make set_channel_mode support IDs (not fully tested)


*** 20010104_34 by davidt
Got rid of the insane list of MSG_* defines from msg.h

*** 20010104_33 by toot
added s_user.h in cleint.c to kill the compile warning


*** 20010104_32 by davidt
Fix ison for lazylinks

*** 20010104_31 by a1kmm
Added myself to the Hybrid-Team


*** 20010104_30 by fl_
- added the unfinished m_jupe.c to contrib/
- contrib/ stuff goes to path/modules, and isnt autoloaded 


*** 20010104_29 by davidt
Fix ISON for lazylinks.  cosmetic fix for LLNICK.


*** 20010104_28 by fl_
- gave contrib/ a makefile..


*** 20010104_27 by davidt
Another LazyLinks nick collide fix, this time for new nicks...


*** 20010104_26 by toot
-pedantic
fixed header in m_clearchan to say contrib


*** 20010104_25 by toot
moved clearchan to contrib, and made it admin only


*** 20010104_24 by davidt
Tidy up lazylink nickcollides partially..
we still get a collision if a new user is already known by the hub...
(but it'll just collide off the new user, not the existing one)


*** 20010104_23 by a1kmm
- Fixed more compile warnings.


*** 20010104_22 by a1kmm
- Fixing a whole lot of compile-warnings.


*** 20010104_21 by toot
. corrected a couple of comments/headers
. added /part reasons to m_part.c.. only work if the chan is -m (or you're opped)
. put back some old /version letters


*** 20010104_20 by wcampbel
Remove the Apache style conf file test code


*** 20010104_19 by wcampbel
Removed the old test data from MONTHS ago


*** 20010104_18 by db
- fixed too many arguments for format in m_gline.c
- fixed too few arguments for format in s_user.c and the conflict
- slight cleanup to m_nburst.c looks incomplete (David-T)



*** 20010104_17 by db
- split register_user() into register_local_user() and register_remote_user()
  also split do_user() into do_local_user() and do_remote_user()

- modified modules that used these functions

- resolved a silly conflict

- someone care to review this change?
     



*** 20010104_16 by a1kmm
- Fixed CRYPT_LINK_PASSWORD to work again in check_server


*** 20010104_15 by a1kmm
- Use GNU format checking features if __GNUC__ is defined - helps us find bugs in printf like send functions.


*** 20010104_14 by a1kmm
- Re-added missing templates in m_server.c
- #ifdef out id stuff for now - it breaks non-openssl builds.


*** 20010104_13 by a1kmm
- Okay, fixed the 'random' data bug - just a forgotten arg to sendto_realops_flags.


*** 20010104_12 by a1kmm
- Changed CLEARCHAN to work with vchans.
- Fixed up server kicks to work better and not give away the server doing it.
- Made CLEARCHAN make kicks come from a server.
- We now join the person doing a clearchan to the channel after kicking everyone, set the TS down by
  one, and set the modes to +ntsi.


*** 20010104_11 by davidt
oops, forgot to cvs add this..

*** 20010104_10 by davidt
Mass move of m_* prototypes from includes/handlers.h into the individual
m_*.c file.  There's no reason for them to be in a header file, since
they can't be used by anything other than the module.....


*** 20010104_9 by adrian


Tidy up my TODO entries a little more



*** 20010104_8 by wcampbel
Cleaned up the logic of STATS p
1. SHIDE on, non oper - currently will only notify opers if either
   stats_p_notice is on, or stats_notice is on, sends nothing back to
   the user
   COMMENTS PLEASE
2. SHIDE off, non oper - Act as before
For opers...act as before


*** 20010104_7 by adrian


We shouldn't just blindly return (0) if everything is ok. handle_message()
might have been telling us something, and in any case, that is what
CLIENT_EXITED / CLIENT_OK / CLIENT_PARSE_ERROR (or whatever it is) was
designed for ..



*** 20010104_6 by ejb
- oops


*** 20010104_5 by ejb
- oops, forgot to commit this.


*** 20010104_4 by ejb
- remove ID debug code, and fix a nasty bug.


*** 20010104_3 by ejb
- commit initial user ID (TS4) code.
  we support IDs, but a couple of things are missing, most notable ID collisions.
  we also don't actually do anything with the IDs yet.


*** 20010104_2 by a1kmm
- Cleaned up m_server and the associated find_server, we now check earlier for it.
- Fixed hostmasking.


*** 20010104_1 by db
- added clearchan
  The command will kick everyone out of a channel. 
  It should also lock the channel up...



*** 20010103_28 by davidt
Add note about 403 numerics to BUGS

*** 20010103_27 by davidt
Fix problems found by adrian where we were referencing free'd client data.



*** 20010103_26 by db
- return CLIENT_EXITED in all cases that a client is exited. things
  are then rosy again for banned clients.
  Next.



*** 20010103_25 by db
- ewwww there were two exit_client()'s on klined banned clients
  moved up where it should have been done. STILL buggy... but closer.



*** 20010103_24 by ejb
- made modules.c use dlink


*** 20010103_23 by davidt
Remove prefix from NICK message during connect burst

*** 20010103_22 by adrian


* add mem_frob(ptr, len) which will frob a block of RAM with 0xdeadbeef.
  Nice for debugging

* frob cptr memory once we've finished with it. This should help us trap
  bugs where we are referencing cptr/localptr RAM after its been freed,
  which is evil bad and wrong.


*** 20010103_21 by adrian


Re-register IO interest if the client isn't CLIENT_EXITED, rather than
if its CLIENT_OK. We can get a client parse error which doesn't mean we
stop listening to the client.



*** 20010103_20 by ejb
- better linked list handling in modules.c


*** 20010103_19 by davidt
Added some more info about problems with gettext.



*** 20010103_18 by davidt
Eeek, client_burst_if_needed should only check capabilities of local connections

*** 20010103_17 by davidt
Fix whois for LazyLinks


*** 20010103_16 by adrian


put the asserts back in. These catch real bugs in the code, and when
they get triggered they mean we need to fix something.



*** 20010103_15 by adrian


#preprocessor directives should start at col 0, not be indented.



*** 20010103_14 by davidt
Yet another cleanup of lazylink stuff.
Attempt to introduce clients where appropriate, before sending
things from them...


*** 20010103_13 by ejb
- rewrote load_*_module to make it work.


*** 20010103_12 by fl_
- fixes for whois:
- all "whois nick" replies look the same, same for "whois nick nick"
  regardless of where the target is


*** 20010103_11 by db
- ok, added sanity tests in the parser to not try to DupString NULL strings
  it won't work properly but at least it won't core.
- NICK should not send a prefix, to be consistent with previous versions



*** 20010103_10 by toot
set the vchan_id in a much more simplistic way
me so silly :P


*** 20010103_9 by madmax
made the comment about the old config not working more prominent too


*** 20010103_8 by madmax
I've tried to highlight the fact that you need to read INSTALL,
and to ./configure --prefix as much as humanly possible.  
From the number of people the changes have confused, i envision us
being told by a lot of people 'it compiles okay but wont run!'..


*** 20010103_7 by madmax
I was going to wait until we were ready to change the patch level.. but 
thought i'd commit these now before they got lost.
Just updated the files to reflect it being a beta release, and tidied stuff
up a bit.


*** 20010103_6 by madmax
Forgot to commit this (reference to BUGS file)


*** 20010103_5 by madmax
Added a list of known bugs for our beta release.. (and references to the file)


*** 20010103_4 by davidt
- Oops, fixed my last commit message in ChangeLog.
- Fixed m_join.c so it doesn't reveal who set the topic on +a channels.


*** 20010103_3 by davidt
- Fixed slight bug in lazylinks handling in m_topic.c
- Now tell nonops the topic was set by me.name on +a channels.

*** 20010103_2 by db
- yet another obsolete prototype gone



*** 20010103_1 by vx0
- modules.c:279 'char *err;' >-> 'const char *err;'


*** 20010102_35 by spookey
- removes AUTOCONN output lines (ANNOYING)


*** 20010102_34 by db
- updated configure setup.h.in



*** 20010102_33 by db
- committed cstone's contributed patch to fix modules under openbsd



*** 20010102_32 by db
- UNTESTED ignore fd < 0 instead of failing an assert *FOR NOW*
  adrian, might want to look at this one.



*** 20010102_31 by davidt
minor patch to stop BitchX coring over an extraneous space in /names output

*** 20010102_30 by a1kmm
Fixed a core causing bug in fdlist code.


*** 20010102_29 by davidt
Fix kill on nickchange with lazylinks

*** 20010102_28 by db
- backed out a changed until beta-2 , its broken hostmasking



*** 20010102_27 by davidt
Add (#if 0'd out) code not to introduce new NICK's to lazyleafs
immediately.  This will also make debugging LazyLeafs easier, since it
shows up the bugs elsewhere faster, without lots of squitting.
But after a beta.


*** 20010102_26 by db
- upped channel clean time for non vchans to 30 minutes
  I thought it was 30 before, it was only 15



*** 20010102_25 by davidt
Updated dependencies

*** 20010102_24 by davidt
I'm stupid, lcptr vs cptr...

*** 20010102_23 by davidt
*sigh*, fix sjoins _from_ lazylink leafs

*** 20010102_22 by davidt
Make SJOIN burst nicks where appropriate..

*** 20010102_21 by davidt
Fix modunload core bug..

*** 20010102_20 by davidt
Another go at fixing netjoins on +a channels... *sigh*

*** 20010102_19 by davidt
Fix .depend for FreeBSD

*** 20010102_18 by wcampbel
Updated some more docs


*** 20010102_17 by fl_
- reapplied the fix that got removed *growl*


*** 20010102_16 by davidt
- Fix SJOIN halfop handling for lazylinks..
- Fix clear_ban_lists to prevent spewing random memory at clients


*** 20010102_15 by wcampbel
Updated a number of docs


*** 20010102_14 by fl_
- fixes for davidt's patch
- use hide_or_not instead of ALL_CHANOPS in another case


*** 20010102_13 by davidt
Added back send_noncap_serv_butone

*** 20010102_12 by davidt
Don't ignore server notices in +g mode

*** 20010102_11 by davidt
Send halfops as @ not % in SJOIN to a non-CAP_HOPS server

*** 20010102_10 by madmax
Just some notes about it being an alpha release and suchlike.


*** 20010102_9 by madmax
Being pedantic - now reads 'hybrid-7(alpha)'
(hopefully not for long?)


*** 20010102_8 by madmax
Tidied up a bit, pointed out its an alpha release.


*** 20010102_7 by davidt
Fix /list #channame

*** 20010102_6 by a1kmm
Fixed up m_server a little to prevent the kiddies from killing recently established servers by dormant
unregistered connections.


*** 20010102_5 by a1kmm
Added a little extra paranoia to fix_key_old


*** 20010102_4 by a1kmm
Fixed convertconf not to core when not all fields are present.


*** 20010102_3 by db
- ircsprintf() returns the length of the string it formats, 
  I forgot. This means don't have to use an unnecessary strlen()



*** 20010102_2 by davidt
- Add back (fixed) logic to m_burst.c (otherwise LL cjoin breaks)
- Fix some more cases in m_join.c that reveal the vchan's true name..
- Fixed the comment in messages.tab for ERR_UNAVAILRESOURCE
- Fix cjoin_channel to find a unique vchannel name, or return
  ERR_UNAVAILRESOURCE


*** 20010102_1 by db
- removed some faulty logic in m_cburst.c, this cored us
  when the nick wasnt' present..



*** 20010101_56 by db
- our new parse.c splits everything up thats separated by a space
  unlike the old parse.c which stopped parsing into separate parv[]
  after maxargs?
- this will handle the RFC just fine, even epic works. Takes up to
  5 nicks as per the RFC



*** 20010101_55 by a1kmm
Fixed links so that when SHIDE=0 it works as before.


*** 20010101_54 by davidt
Refix the core bug so it catches both possible problems, Doh.

*** 20010101_53 by davidt
Fix possible core bug in lljoin...

*** 20010101_52 by davidt
removed test for length of string (which is checked in build_channel_list) against address of pointer.. oops?

*** 20010101_51 by wcampbel
gline.log.<date> should be in LOGPATH, not ETCPATH


*** 20010101_50 by a1kmm
Don't reload modules if they are already loaded and we see a module= in the config file.


*** 20010101_49 by davidt
Fix join 0 on vchans, and fix that stupid compiler warning for m_challenge.c

*** 20010101_48 by db
- parv[1] might be longer than max channel len if two channel names
  are catenated. better to check in build_channel_names



*** 20010101_47 by bysin
Why didnt anyone make sure parv[1] was > CHANNELLEN, i had a fun time buffer overflowing that.


*** 20010101_46 by ejb
- fix s_serv.c


*** 20010101_45 by davidt
Remove extra variable i forgot about

*** 20010101_44 by db
- ignore bogus TS from servers. pure and simple. TS0 is broken
  It =will= desync for a while. *TOUGH*



*** 20010101_43 by ejb
- DONT put all modules in example.conf, they are loaded on startup anyway.


*** 20010101_42 by davidt
*Sigh*. sorry. I missed a space. :(

*** 20010101_41 by davidt
Display <secret> for +s vchans in the vchan list.

*** 20010101_40 by a1kmm
better check realname too while we are at it...


*** 20010101_39 by a1kmm
Added a sanity test of user and hostname length from other servers.


*** 20010101_38 by wcampbel
Added some more conf variables to INFO


*** 20010101_37 by davidt
Fix a buffer overflow in send_mode_list

*** 20010101_36 by fl_
- sending "JOIN #channel" on its own would core the uplink: fixed


*** 20010101_35 by a1kmm
okay, now the cvs 'conflict' over m_whois.c should be completely resolved and madmax's comment out version
should stay...


*** 20010101_34 by a1kmm
Added module list to example.conf



*** 20010101_33 by wcampbel
Cleaned up the example.conf a little


*** 20010101_32 by davidt
Prevent non-human 'things' being sjoined to channels....

*** 20010101_31 by davidt
Don't allow servers to JOIN channels, eugh

*** 20010101_30 by davidt
Eliminate race condition from s_serv.c, where we could add a server to serv_list (for SJOINS, etc) without first bursting it)

*** 20010101_29 by fl_
- dont show how many local users we have if shide is on
  instead make the local user reply the same as the global one


*** 20010101_28 by db
- setting autoconnall to 0, should not affect the ability of others
  to connect to your server, or you to connect outgoing. If we want the
  capability of disabling connections to the server, there should be another
  set flags. Its a misnomer to double use autoconnall for that.



*** 20010101_27 by davidt
Add message_locale to doc/example.conf
Add vchans_oper_only to doc/example.conf, doc/whats-new.txt and
actually add the code to do it.
Fix modload, et all to send error messages if used by non ircops
(instead of just silently ignoring the command) 


*** 20010101_26 by madmax
The last patch broke /whois
(You could only whois people on the same server if your uplink didnt forward
the numerics - not something we want..)
Just commented out A1kmm's code.
We can come back to this once we've cut a beta


*** 20010101_25 by toot
'already registered' should be a numeric, not a notice


*** 20010101_24 by davidt
Oops.  cjoin should also work on non-lazylinks now :)

*** 20010101_23 by db
- ignore capab sent from remote server



*** 20010101_22 by davidt
Missed a change to cburst..

*** 20010101_21 by davidt
Massive attempt to cleanup vchans, and some problems with vchan+LL.
- change cjoin on LL to ask the hub
- change cburst to support cjoin as well as join (minor change)
- change lljoin to support cjoin
- change lljoin to support joining vchans
- fix opsyncing to use the correct channame in vchans
- various other things I've forgotten


*** 20010101_20 by a1kmm
Fixed whois to always route.
Now show idle times even when SHIDE=1.


*** 20010101_19 by vx0

Updated contributor names list


*** 20010101_18 by a1kmm
- Away is now better flood controlled.


*** 20010101_17 by fl_
- it should compile now..


*** 20010101_16 by fl_
- dont sent people a +e/+I list when they get opped in a +a chan


*** 20010101_15 by bysin
Added me cause I'm lame.


*** 20010101_14 by db
- delay initial startup of try_connections() to forestall nick collides
  because of servers that haven't noticed the server restart.



*** 20010101_13 by bysin
Oops, fixed buffer overflow again.


*** 20010101_12 by bysin
I fixed a buffer overflow in this.  Right before its gunna be released.  I hope this works.


*** 20010101_11 by db
- added isomer and riedel



*** 20010101_10 by madmax
Gave myself a TODO


*** 20010101_9 by davidt
Fix mode on vchans...

*** 20010101_8 by davidt
Fix vchan part to work properly with LazyLinks too... (oops)

*** 20010101_7 by davidt
Fix vchan part to work properly

*** 20010101_6 by davidt
stop collapse() coring on a null pattern

*** 20010101_5 by toot
only hide remote numeric origins if shide is on


*** 20010101_4 by toot
. finally, you can join +k vchans :)
. fixed /mode #chan giving weird replies
. removed some old commented code in channel.c


*** 20010101_3 by db
- just stuck an early draft of this into cvs



*** 20010101_2 by wcampbel
make depend needs to have the CFLAGS in addition to -MM.
This is for making sure that the error messages associated with gcc
not being able to find /usr/local/include/libintl.h don't crop up.


*** 20010101_1 by wcampbel
Updated my part of the TODO list


*** 20001231_31 by wcampbel
1. Added A1kmm's match.c patch (to fix gecos blocks)
2. Fix compiler error in m_part.c (chname -> name)


*** 20001231_30 by davidt
Uhmm.. or should part be the top chan name between servers?
argh. see bug #15


*** 20001231_29 by toot
removed a cvs tag from ChangeLog, and fixed some of my typos :P


*** 20001231_28 by davidt
parting a vchan should send vchan->chname to remote servers....

*** 20001231_27 by toot
fixed some formatting in m_whois


*** 20001231_26 by toot
it didn't :P
char *_version = "<dollar>Revision: 1.35 <dollar>"; looks a bit poo


*** 20001231_25 by toot
checking that Revision CVS tag works okay for module version numbers


*** 20001231_24 by spookey
 - #define CONNECTTIMEOUT  15      /* Recommended value: 30 */


*** 20001231_23 by toot
stopped /names showing member lists in a +s channel from outside
and made it skip +i people in -s chans from outside


*** 20001231_22 by wcampbel
ANONOPS -> AOPS


*** 20001231_21 by davidt
Add missing prototypes to stop gcc moaning.

*** 20001231_20 by db
- added spookey to Hybrid-team. 



*** 20001231_19 by davidt
Fixes to allow @#chan and +#chan to work correctly.


*** 20001231_18 by db
- really ANONOPS is way longer than any other capability we have
  lets shorten it to AOPS ok?



*** 20001231_17 by db
- optimized can_join a bit
  No need to generate an expensive to generate string twice, so added
  check_banned as a helper function for is_banned that way can share
  the strings from can_join
- make_nick_user_host was being called, then strcpy'ed. dumb. why not
  tell it where to generate the string in the first place? and remove
  a dumb strcpy?



*** 20001231_16 by spookey
 - fixes flood control... >= not >


*** 20001231_15 by db
- updated TODO



*** 20001231_14 by wcampbel
Document ANONOPS CAPAB


*** 20001231_13 by wcampbel
Document links_delay


*** 20001231_12 by wcampbel
Updated .depend's


*** 20001231_11 by wcampbel
Added Riedel's REHASH CHANNELS patch


*** 20001231_10 by lusky
- david (accidentally?) moved the %type's back to the top, they've got
  to be below the %tokens.


*** 20001231_9 by toot
. changed most remaining param counts so that parse() checks them
. servers don't send USER any more do they? - removed some checks
  which were only used for that anyway..
. removed a few more redundant checks, which parse() takes care of
. show "*" inplace of Nick for unregged users with no nick


*** 20001231_8 by spookey
 - minor cleaups


*** 20001231_7 by davidt
Attempt to fix various issues with channel modes.. although there are still a few bugs left :/

*** 20001231_6 by toot
. fixed a possible overflow in m_list with persistant vchans
. moved the vchan_id setting into remove_user_from_chan so the user
  is still in a dlink_list :P


*** 20001231_5 by lusky
- fixed make distclean for gnats


*** 20001231_4 by db
- hard to find typo in ircd_parser.y yyval instead of yylval
  caused it to core parsing message_local="string";




*** 20001231_3 by db
- this is some very old fugly hacked code we had in hybrid-6 to 
  allow multiple Q lined nicks ... never mind it was a hack, its
  gone. 

- also moved the %type block back in ircd_parser.y until debugged
  the set locale code. 



*** 20001231_2 by db
- fixed logic in m_stats.c pertaining to o_lines_oper_only



*** 20001231_1 by db
- added check for unknown type in proc_answer in res.c 
  only rudimentary logging added for now.
- check for enough parameters in m_invite.c core bad, not enough parms good.



*** 20001230_25 by fl_
- reverted back to old behaviour of only chanops seeing +e/+I


*** 20001230_24 by lusky
- more solaris fixes, should now build and install cleanly


*** 20001230_23 by db
- *red face* backed out a change I thought about making but forgot to
  remove a ')'



*** 20001230_22 by db
- quick hack for now (adrian, forgive me, for I have sinned)

    /* XXX NOT the right "solution" */
#if 0
    assert(fd >= 0);
#endif
    if(fd < 0)
      return;




*** 20001230_21 by davidt
Only resync the channel if required..

*** 20001230_20 by davidt
- Create a new capability: CAP_ANONOPS for servers that support +a
- Fix +a so it's only sent to servers supporting it
- Fix +a so that nonops still see modes they should, but as server modes.
- Fix sendto_channel_local to send NONOPS messages to voiced users too.


*** 20001230_19 by lusky
- check for strings.h for bzero() on solaris


*** 20001230_18 by lusky
- have autoconf detect whether -export-dynamic is needed for ld


*** 20001230_17 by db
- I hate broken tree's resolved a conflict.. weird conflict too
  looked identical the two sections



*** 20001230_16 by lusky
- solaris yacc is picky picky picky
- replace strsep() with strtoken()


*** 20001230_15 by lusky
- oops, forgot an arg to sprintf


*** 20001230_14 by lusky
- missed another setenv()


*** 20001230_13 by lusky
- eradicated setenv(), it's not portable.  specifically sol2.6 doesn't
  have it.


*** 20001230_12 by fl_
- Fix for IP klines 
- We now check to see if remote klines exist locally, before applying them


*** 20001230_11 by db
- removed ';' that were in the wrong spot, these caused bison and solaris
  yacc to have a fit.



*** 20001230_10 by db
- chptr->vchan_id will never be a NULL pointer so the test wasn't doing
  anything at all. Its declared as 
  char            vchan_id[NICKLEN*2];   /* use this for empty vchans */
  not a char *; One could do if[chptr->vchan_id[0]) but then once set
  vchan_id[0] would never be null either.



*** 20001230_9 by toot
added a paranoid check in pick_vchan_id


*** 20001230_8 by lusky
- use errno.h instead of sys/errno.h.  freebsd and redhat don't care, but
  solaris does.


*** 20001230_7 by toot
moved the code that set vchan_id up


*** 20001230_6 by lusky
- more compile warning fixes.  mmmm, socklen_t.  compiles on redhat6.1 now
  without warnings (if you fix the broken /usr/include/bits/socket.h
  by hand).


*** 20001230_5 by lusky
- more compile warning fixes, /modules compiles cleanly on freebsd3.4 now


*** 20001230_4 by lusky
- more cleanups
- fixes /usr/local/include/rsa.h snafu from last commit


*** 20001230_3 by db
- committing madmax's links patch before it gets lost 



*** 20001230_2 by lusky
- more cleanups, /src now compiles without warnings on fbsd3.4


*** 20001230_1 by lusky
more massive cleanups of compiler warnings


*** 20001229_28 by lusky
started cleanup of compiler warnings


*** 20001229_27 by lusky
- hack to make the developer CFLAGS the default.  You can still set CFLAGS in
  your environment before running configure if you want to override them.


*** 20001229_26 by lusky
added my IM pipedream to TODO


*** 20001229_25 by davidt
oops.  Stay compatable with ircd-hybrid-6...

*** 20001229_24 by davidt
Fix $$/$# -- still problems with LL, just like everything else..
I'll look into that [again] later..


*** 20001229_23 by lusky
- don't recurse into messages if we don't have gettext


*** 20001229_22 by wcampbel
Document problem with old openssl installed in /usr/local/lib failing
to link the RSA stuff used in Hybrid


*** 20001229_21 by davidt
Ignore errors installing message files.. hrm.. maybe leaving the .mo in the repo wasn't such a bad idea.. *sigh*

*** 20001229_20 by lusky
updated TODO


*** 20001229_19 by lusky
- added rm config.cache to make autoconf
- fixed configure to find gettext() in /usr/local/lib/libintl.a
- kludge in config.h so HAVE_GETTEXT follows HAVE_LIBINTL
- custom.mo shouldn't be in the respository
- removed HAVE_GETTEXT from m_info, USE_GETTEXT is what we care about


*** 20001229_18 by davidt
Stop LL leafs replying to MODEs from servers with another MODE..
this should never happen, but it is currently (see bug #7 on hybzilla).


*** 20001229_17 by fl_
- removed the sendto_match_noncap_servs(), as its now redundant
- if a user sets mode +h nick, and hes on a server that doesnt support
  halfops, he would be opped.  we still pass the +h as far as possible,
  but do nothing to that user



*** 20001229_16 by wcampbel
"Permission Denied-" -> "Permission Denied -"
This has been driving me crazy


*** 20001229_15 by wcampbel
Put in Riedel's revised operguide.txt, thanks a lot!


*** 20001229_14 by wcampbel
1. Added links_notice to example.conf
2. Corrected Riedel's nick in ChangeLog
3. Fixed some general {} settings in ircd_parser.y (stats_p_notice, glines)


*** 20001229_13 by wcampbel
Minor correction to send.txt


*** 20001229_12 by fl_

- Added sendto_match_noncap_servs to send.c, and documented it
- Send mode #channel +h nick as +h via sendto_match_cap_servs, and as +o
  via sendto_match_noncap_servs, thus keeping the channel synced
- Updated my todo


*** 20001229_11 by db
- fixed bug in m_sjoin.c that cored server. Non local servers being
  introduced via sjoin and given by sptr, do not have a LocalUser part
  hence, this field is NULL and will core if you try to refernce the caps
  field using IS_CAP()



*** 20001229_10 by fl_

- fixed a bug I made which caused a -o nick when they werent being deopped


*** 20001229_9 by fl_

- gave myself a todo list..


*** 20001229_8 by fl_

- +e/+I modes can now only be seen by chanops


*** 20001229_7 by davidt
Fix gettext() for FreeBSD (LDFLAGS="-L/usr/local/lib" ./configure).
Anyone with autoconf knowledge know how to make it check /usr/local/lib
automagically?


*** 20001229_6 by madmax
Links are now stored in the file in a format resembling normal links output
ie "servername uplink(me.name) :hops(1) info"
This makes it look a bit prettier in mirc etc ;)
Also it now outputs me.name in the links list (again for consistency).


*** 20001229_5 by toot
flame's right.. there's no need to send +e/+I when you get opped
in a +a chan.


*** 20001229_4 by toot
. hide H in version with hide_server
. use MAXMODEPARAMS rather than 4 in the +a sync stuff


*** 20001229_3 by db
- increased MessageFileLine length this should be malloced ;-/
- added server info to user seen /links



*** 20001229_2 by db
- fixed another bug in s_conf.c
  recheck_class() had the bad side effect of moving opers from oper
  class to their old class on a /rehash... It also had the side effect
  of dropping already made connections.. not cool Its not necessary
  to recheck classes as it happens... fixed.



*** 20001229_1 by db
- ok. this is the first cut at building an user readable /links
  from doing our own /links and storing in a file for off line use.



*** 20001228_38 by fl_

1. Added error message if user is unopped, and does a /mode #chan +e
2. +b/+d modes are no longer shown to be removed/placed when a user is
   deopped/opped in a +a channel, they can see the lists anyway so they
   dont need us to keep them in sync..
3. If you -h'd someone on a +a channel, they didnt see the -h: fixed
4. If the channel is +a, /mode #chan +d wont tell you who set the ban if
   youre unopped, same as +b

I wanted to remove the +e/+I mode from the sync too.. need to wait to
talk to david first tho. :)


*** 20001228_37 by wcampbel
1. Updated my TODO list
2. Update INFO to show HAVE_GETTEXT and SELECT_TYPE


*** 20001228_36 by wcampbel
Update of a couple documents


*** 20001228_35 by fl_
- fixes for servermasks in remote klines that include the local server


*** 20001228_34 by fl_


Added more documentation to doc/kline.txt


*** 20001228_33 by davidt
&& should be ||..

*** 20001228_32 by wcampbel
Forgot to document it in opers.txt...where's your bloody mind today Hwy?!


*** 20001228_31 by davidt
.collapse the signs for chanop-only modes..

*** 20001228_30 by wcampbel
Added o_lines_oper_only option to the configuration file


*** 20001228_29 by davidt
oops, got -/+ back to front

*** 20001228_28 by davidt
Try to keep +a channels synced up with the clients.
When a channel goes +a, tell everyone that the channel has been massdeoped
When it goes -a, tell everyone that the ops have been mass oped..
When an individual user is opped/deoped, tell only them.


*** 20001228_27 by db
- local array shoud be static. bad Diane bad bad bad



*** 20001228_26 by db
- ummm unitialized pointers should not be strcatted... bad bad bad
  bad coder...



*** 20001228_25 by spookey
 - Adds string lookup capability to modlist (QUOTE MODLIST [STRING])


*** 20001228_24 by bill

- fixed mode bug (thank you, Diane)
- I hear that a new messages/custom.mo wouldn't hurt :)


*** 20001228_23 by davidt
Attempt to sync the client up when it gets given ops on a +a channel..

*** 20001228_22 by davidt
Only hubs don't send info... leafs always send..

*** 20001228_21 by adrian


* Check to make sure a SIGHUP actually causes a rehash. The last time I tried
  it, the server stayed running, but the ircd stopped listening on ports.



*** 20001228_20 by adrian


Add my stuff to the code whats-new file. Can everyone add their own?



*** 20001228_19 by adrian


add a documentation index.txt file in doc/ so we can at least attempt to
show people what we have avaliable. Perhaps it should be called README,
I dunno.


*** 20001228_18 by adrian


* fix typo
* add 'active' because stats f displays active fd's, not all of them.



*** 20001228_17 by bill

- working on that MODE problem between servers still


*** 20001228_16 by ejb
- add links_notice to config.


*** 20001228_15 by toot
. started adding the ircd.conf options to /info (same order
  as in example.conf)  got as far as max_nick_changes.
. put back a "You are Dlined" notice that had run off 
. removed a couple of unused settings


*** 20001228_14 by bill

- added hyb7 +h modes to hyb6 +o modes


*** 20001228_13 by toot
show a couple of ircd.conf options in the /version line
G(glines) and H(hub) are there.. with room for more ;) 


*** 20001228_12 by davidt
Add nick_changes=yes; to example.conf

*** 20001228_11 by davidt
Add missing ()'s so /lusers only hides the info for NON-opers

*** 20001228_10 by bill

- added hyb6 compatibility checks for halfops (best solution is to tell remote s  ervers that they're regular ops)
- updated dependancy file accordingly


*** 20001228_9 by davidt
It would also core sending the failure message.. bleh.

*** 20001228_8 by davidt
/set autoconn with no params would core the server.

*** 20001228_7 by bill

- fixed typo


*** 20001228_6 by toot
cleaned up /stats e.. tab symbols just don't work with most irc clients


*** 20001228_5 by toot
. check /set, rather than ircd.conf option for hide_server in m_whois


*** 20001228_4 by db
- oops. I broke remote topic



*** 20001228_3 by lusky
removed a bunch of unneeded junk from configure script
fix for missing RTLD_NOW on openbsd


*** 20001228_2 by lusky
fixed some typos in ChangeLog (yes, you can edit ChangeLog even though
   it's automatically updated).
Major cleanup to Hybrid-team
version.c.SH now reads ../Hybrid-team
removed configure from Makefile.in and added new make autoconf option


*** 20001228_1 by lusky
fixed socklen_t check


*** 20001227_38 by wcampbel
1. Document some of the configure options (kqueue!!!)
2. Bring INFO up to date (show if OPENSSL is enabled or not, STATS_NOTICE
   no longer compiled in, so don't show it)


*** 20001227_37 by wcampbel
1. Updated my part of the TODO list
2. Synchronized Hybrid-team and version.c.SH (einride in one, flame in the 
   other, and Wohali's email address changed)


*** 20001227_36 by ejb
- make configure should run conifgure as well as building it
- make /restart require server name


*** 20001227_35 by davidt
Oops, do not use sendto_ll_.. for sjoin

*** 20001227_34 by davidt
I remember fixing this... wtf

*** 20001227_33 by ejb
- update my todo list


*** 20001227_32 by davidt
oops, I'm stupid.  this _does_ work.

*** 20001227_31 by ejb
- add readme for cintrib


*** 20001227_30 by davidt
Fix rather confusing message to opers when a server sends a numeric
directed at a server.
Fix exit_one_client so that we take LLs into account when a client quits.


*** 20001227_29 by ejb
Directory /cvsroot/ircd-hybrid-7/contrib added to the repository


*** 20001227_28 by davidt
Fix ping to prevent servers throwing 402 nosuchserver numerics at each other

*** 20001227_27 by db
- committed flames m_kline.c fix



*** 20001227_26 by db
- fixed bug stumbled across by mariab, how did this one get missed?



*** 20001227_25 by ejb
- check for socklen_t


*** 20001227_24 by ejb
- readd include/ to Makefile
- make configure be rebuilt automatically when needed.


*** 20001227_23 by wcampbel
Added Riedel's operguide.txt (Currently for Hyb5/6, in progress for Hyb7)


*** 20001227_22 by ejb
- oops, forgot to add this.


*** 20001227_21 by db
- oops, forgot to add this.


*** 20001227_20 by db
- removed include from Makefile.in for now



*** 20001227_19 by ejb
- install headers into ircd/include
- check for socklen_t (check doesnt work too well now, will fix later)


*** 20001227_18 by davidt
Allow remote servers to send notices

*** 20001227_17 by davidt
quick patch to make yes/on == 1 and no/off == 0.

*** 20001227_16 by wcampbel
Committed flame's remote connect WALLOPS fixes


*** 20001227_15 by db
- committed flames operwall changes



*** 20001227_14 by wcampbel
Updated .depend's again


*** 20001227_13 by davidt
Oops, fix for my last commit


*** 20001227_12 by davidt
Massive bunch of fixes for LazyLinks.
INVITE now works if a hub is trying to relay an INVITE to a LL leaf
which doesn't know about the channel yet.
TOPIC now works if a user on a LL leaf tries to get the topic for a
channel the leaf doesn't know about
Hubs now only send MODE changes to LL leafs that know about the user
coredump in LLJOIN fixed..
some other misc stuff too...


*** 20001227_11 by db
- wrong parmcount, cores each of unkline, undline, ungline



*** 20001227_10 by db
- use the parameter block, don't core on 0 parameters for dline



*** 20001227_9 by davidt
Fixed the off-by-one error in the paramcount


*** 20001227_8 by davidt
Added back /quote set msglocale, which vanished mysteriously when
the new table-based SET code was comitted.
Reworked the argument handling for the SET handlers in the process,
handlers can now take: char; char, int; or int; arguments.


*** 20001227_7 by db
- must use ClearOper() macro to deoper, otherwise handler is still set
  to oper handler. ooops



*** 20001227_6 by wcampbel
DNS and HTM no longer exist, document CJOIN in opers.txt


*** 20001227_5 by wcampbel
Removed references to the old conf format removed


*** 20001227_4 by davidt
Fix up messages/ to work with the new install stuff

*** 20001227_3 by db
- notify target if source is a half-op and target is an op



*** 20001227_2 by db
- topic change from server should appear to come from local server
  always.



*** 20001227_1 by db
- pathological case would cause a core. If someone fed back the
  same server as the server as "me" it would core since there would be
  no ->from... This bug looks like it would be in hybrid-5, hybrid-6
  and all 2.8 derivitatives



*** 20001226_10 by wcampbel
Document MD5 oper password support


*** 20001226_9 by db
- if test on name not className caused spoofs to lose their classes



*** 20001226_8 by db
- missing DupString() on cconf classname



*** 20001226_7 by bill

- fixed typos


*** 20001226_6 by db
- fixed bug in m_nick, leafs always should send their nick changes
  since a leaf always introduces all of its clients to their uplink
  but hubs should continue to watch they do not send nick changes for
  clients that have not been introduced yet to leafs.



*** 20001226_5 by db
- number of wrong counts in the parmcount table.. caused these to core
  parc inludes the source as well as arguments



*** 20001226_4 by db
- lljoin was checking for arg count, when thats no longer necessary
  given the new parser

- parser got the parc count off by one when checking for vality, off by one
  error.. also cleaned up formatting

- modules.c two functions were referring to basename() which had been 
  changed to irc_basename()

- s_serv.c was sending topic to servers that didn't see that server on
  channel, changed interface so s_serv.c bursts topic info to lazyleaf
  as well as setting topic

- changed m_topic.c to allow servers to set topic and topic info



*** 20001226_3 by db
- don't burst the TOPIC in s_serv.c until there is a ms_topic() handler
  the server isn't on channel so the leaf will send back an not on channel
  numeric to the server!

- cleaned up setting of fd_note in m_nick()... in both cases it
  is known the nick is local, as non local nicks are handled in separate
  function.



*** 20001226_2 by db
- fix core in m_list.c if /list of non-existent channel is done. oops



*** 20001226_1 by spookey
 - moved basename() to irc_basename() -- compatability issue with old glibc systems (string.h used to declare basename())


*** 20001225_20 by wcampbel
Updated dependencies


*** 20001225_19 by ejb
- fix knock paramcount
- make knock use +p to stop it, not +s


*** 20001225_18 by wcampbel
1. Noted that auth blocks with redirection MUST have a class
2. is- says anonops is hideops


*** 20001225_17 by db
- I'm not sure how this ever worked before..
  yylval.string should be DupString'ed in MOST cases before adding to conf
  link list

  UNTESTED folks, sorry have to do the Christmas day family visiting thing NOW



*** 20001225_16 by ejb
- allow remote whois.


*** 20001225_15 by toot
replaced some ConfigFileEntry.hide_server with GlobalSetOptions.hide_server


*** 20001225_14 by ejb
- split out some of parse() into a couple of new functions,
  handle_command() and string_to_array().


*** 20001225_13 by toot
. don't want it to say its listing pending_glines if there aren't any
. param counts should al be correct now


*** 20001225_12 by toot
. fixed some paramcounts in modules
. make GLINE_CLEANUP_TIME a bit more frequent


*** 20001225_11 by wcampbel
Document HUB CAPAB


*** 20001225_10 by wcampbel
Document ISUPPORT


*** 20001225_9 by db
- send on HUB capability if configured as HUB



*** 20001225_8 by wcampbel
1. Updated my TODO list
2. Updated whats-new.txt a little
3. Put a missing space in flame's name
4. Added a summary of the user and channel modes


*** 20001225_7 by db
- I'm convinced. Lets allow remote motd in non shide mode at least
  Its a module, so it can all be changed on the fly anyway.



*** 20001225_6 by db
- sending channel_member_names() to a server is not useful, sending it to the
  client that just joined, might be.



*** 20001225_5 by toot
. made glines and pending_glines into dlink_lists
. couple of minor cleanups/cosmetic changes to m_nick


*** 20001225_4 by db
- motd of non local servers should not be shown to users



*** 20001225_3 by db
- was missing nick in do_numeric in parse.c ... 401 was not
  (no such nick) was not being seen properly by client on LL server.



*** 20001225_2 by db
- ummmm parse isnt' handed a null terminated line, its handed the end of
  of the buffer as well as the start. The end of the buffer if its 
  rfc compliant, will be '\r' '\n' but no terminating '\0'
  so, take bufend look one back that should be a '\n', then blast it
  then look to see if there is a '\r' before it, if so blast it as well
  then thats it... end is now the valid end of the buffer 



*** 20001225_1 by db
- numeric sent to server should be announced what it is ...
- nick change while not on channel would not be propogated to a LL server
  causing those mysterious nick collides. oops.



*** 20001224_23 by db
- extra '\n' in log() not needed



*** 20001224_22 by wcampbel
1. Forgot to change the formatting in oper_only_umodes
2. Add 'rej' '+r' to oper_only_umodes
3. Created a new simple.conf

--snip--
# NOTE TO DEVELOPERS:  Do we set defaults for the variables in the general
#                      block?  If so, then I can leave out most of the things
#                      in here and make it simpler to configure.  If not,
#                      please let me know so I can document things clearly
--end--


*** 20001224_21 by db
- bufend was already there, so use it...



*** 20001224_20 by wcampbel
Add a little more documentation to is-'s oper_only_umodes


*** 20001224_19 by db
- removed unneeded match()
  and removed quite obsolete comments... 
  *sigh* This isn't an historical paper folks, those belong in museums
  not a modern ircd.



*** 20001224_18 by toot
reworded total recieved connections message.  and fixed it in /stats u


*** 20001224_17 by toot
fixed bug that made the date appear twice when klines where written


*** 20001224_16 by adrian


I hate my own grammar.



*** 20001224_15 by toot
SOD IT!!
made tklines into a dlink_list


*** 20001224_14 by adrian


Explain what we're not doing with the poll fd lists ..
Yes, I'll get there after some more feedback.. :-)



*** 20001224_13 by adrian


Stick in an #error in the code - I still haven't finished the poll() code,
so I haven't rewritten the select code ..



*** 20001224_12 by db
- removed lame test that was restarting irc.mcs.net for no reason..
  under heavy ddos the server was being lagged enough to restart..
  No real need for this test.



*** 20001224_11 by db
- remove last remnant of evil #ifdef CHROOT



*** 20001224_10 by adrian


Change some of the comments which aren't applicable now that the old-school
io loop is gone.



*** 20001224_9 by adrian


* move try_connections() into an event, where it should have been a long
  time ago. Its called every TRY_CONNECTIONS_TIME seconds, which right
  now is defined as 60 seconds

* Make most of ioloop() redundant. MMmmmm.. ioloop() looks sexy-slim now..



*** 20001224_8 by toot
. tkline expiry kept crashing.. redid it so it won't
. added VCHANS to 005 numeric


*** 20001224_7 by db
- tidied up isomer's parse.c mods... Then noted that someone was
  sending a numeric to "me" which led to...
- fixing who sends the MODE message in m_mode, it should be sptr->name
  not me.name
- Then noted a conflict in LOGPATH, which I resolved by changing 
  LOGPATH in ircd_parser.y ircd_lexer.l to T_LOGPATH
- removed with extreme prejudice all UID/GID CHROOT crap. my goodness
  efnet servers are dedicated now, and if you really insist, set up a jail
  or something.



*** 20001224_6 by wcampbel
Revised a couple documents


*** 20001224_5 by adrian


Create a LOGPATH which contains the logfile directory, and then
stick ircd.log in there instead of ETCPATH.

What *really* should happen is that these paths and filenames should
be defined in the configuration file, but... :-)



*** 20001224_4 by isomer
* rewrote do_numeric(), it nolonger accepts multiple targets (can't happen)
and hopefully has bugs removed. on the other hand tho, it's only been tested
in that it compiles...





*** 20001224_3 by ejb
- fixed bug whereby a module was not actually dlclose()d in unload_one_module,
  hence trying to reload a module would actually reload the old one
- fixed paramcount in accept
- added mo_version to version_msgtab


*** 20001224_2 by isomer
Changed the way mo_version works with respect to hunt_server



*** 20001224_1 by isomer
oops! forgot about opers!


*** 20001223_57 by wcampbel
Dependencies again....these need either manually done every time someone
changes a header, or automatically done.


*** 20001223_56 by isomer
* added 'show_isupport' and added to m_version (local only).



*** 20001223_55 by ejb
- update my TODO list


*** 20001223_54 by ejb
- finally fix the annoying parse error bug in ircd_parser.y


*** 20001223_53 by wcampbel
1. Updated .depend's
2. Added blank depend rules in doc, gnats, and tools Makefile.in's


*** 20001223_52 by ejb
- make ISUPPORT numeric support max_targets dynamically
- cleaned up gnats/Makefile.in a bit.


*** 20001223_51 by ejb
- some more paramcount fixes
- make +h's propagate (oops)


*** 20001223_50 by ejb
- cleanup and fix of parse.c, should fix a couple of bugs.


*** 20001223_49 by ejb
- documented max_targets, and made it default to 4.


*** 20001223_48 by ejb
- fix for another parse.c bug
- make max_targets an ircd.conf options


*** 20001223_47 by isomer
Doh! forgott supported.h (sorry toot!)



*** 20001223_46 by isomer
added 005 ISUPPORT support.



*** 20001223_45 by ejb
- added explanatory comment in parse()


*** 20001223_44 by ejb
- finally fix the broken longarg handling in parse.c



*** 20001223_43 by ejb
- fixed fname_* (oops, hi diane)


*** 20001223_42 by ejb
- support paths for module loading.


*** 20001223_41 by wcampbel
Document CAP_HOPS


*** 20001223_40 by ejb
- fix m_userhost paramcount


*** 20001223_39 by ejb
- added flame to Hybrid-team.


*** 20001223_38 by ejb
- readd 3rd argument to MYINFO, added it in custom.po as well this time.


*** 20001223_37 by wcampbel
might as well add myself too...


*** 20001223_36 by ejb
- use CAP_HOPS for half-ops


*** 20001223_35 by madmax
All server modes now show as coming from the current server.
This is now whether you are shiding or not - CS has always done it that way 
apparently, so nothing should break.


*** 20001223_34 by ejb
- add cap_hops, doesn't do anything yet.


*** 20001223_33 by ejb
- move oper_only_umodes into ircd.conf.


*** 20001223_32 by toot
disable SYSLOG by default
updated .depends


*** 20001223_31 by toot
made local kills look like global kills to users (flame)
-- they were already suposed to.. but wern't quite right :)


*** 20001223_30 by joant
Updating my email address

*** 20001223_29 by ejb
- fix a couple of paracounts.


*** 20001223_28 by toot
MYINFO had gone a bit weird.. synced it with custom.po's


*** 20001223_27 by madmax
Hopefully i'll justify my entry soon ;)


*** 20001223_26 by spookey
removes extra tab craziness, it drove me INSANE... =P


*** 20001223_25 by ejb
- fix off-by-one error in parse.c


*** 20001223_24 by toot
made tkline expiry into an event, and fixed some bugs with temp-klines..
there's still more bugs with them though


*** 20001223_23 by madmax
Fixes for operwall/locops (flame)


*** 20001223_22 by ejb
- fix a stupid core in parse.c.


*** 20001223_21 by ejb
- slightly neater fix for ISON, still has a bug:
  ISON a b :is-
  will still return is- is NOT on because of the :, which
  is blindly copied to the output .. can fix this if its a problem,
  is it likely to be ?


*** 20001223_20 by ejb
- slightly ugly fix to ISON problem committed.  someone might want to take a look
  at the code in parse.c..


*** 20001223_19 by ejb
- noted in whats-news.txt that the old ocnfig format is no longer
  supported.


*** 20001223_18 by madmax
Opers can now see idle times and servernames in whois when shide is on


*** 20001223_17 by toot
fixed my screw up with temp-klines


*** 20001223_16 by ejb
- applied flame's gline/kline diffs.


*** 20001223_15 by toot
empty (ie, persistant) vchans use the last person in the channel as
the ID, prefixed with an extra ! ..
so we get
#test has 2 possible virtual channels available
#test !toot !!toot_


*** 20001223_14 by ejb
- add OPER_ONLY_UMODES, umodes which only opers can set.


*** 20001223_13 by wcampbel
1. Make STATS for non-opers consistent...if it's an oper only STATS request,
   then always show ERR_NOPRIVILEGES.
2. Allow STATS x, does the same as X, no reason why it shouldn't
3. I forgot a couple STATS in the opers.txt documentation


*** 20001223_12 by wcampbel
1. Add the broken $$target and $#target to the TODO list
2. Channel Mode +z became +a, update whats-new.txt
3. Brought README.FIRST up to date


*** 20001223_11 by ejb
- move fname_* into ircd.conf.
- added fname_foperlog, not used yet.



*** 20001223_10 by madmax
Changed split reason when hidden to : "<servername> net.split" 


*** 20001223_9 by db
- show a fake name in the second field on links, this makes scripts
  and bx work better
- when deopering remove admin flag (madmax pointed this one out)



*** 20001223_8 by toot
. added undline/ungline to opers.txt
. log temp klines, and check for redundancy too
. fixed some weird stuff with tkline_time, it's always in minutes..
. added a bit more logging for server disconnections
. always show the full quit reason in +c
. check "if ((x))" in MyFree


*** 20001223_7 by adrian


Update the TODO file with the current state of affairs.



*** 20001223_6 by adrian


Fix 'make distclean' targets in various directories to actually

* not error out when someone types 'make distclean'
* delete Makefile


*** 20001223_5 by db
- added a rough document outlining how remote klines work
  for oper and server protocol.
  I know Walter or Joan can do better, but I think its better than
  nothing no?



*** 20001223_4 by db
- re-added "Ping timeout: nnn seconds" to time out code. 



*** 20001223_3 by db
- client that is notice'ed should not reply with an away.. noticed by Rodder



*** 20001223_2 by db
- fixed stupid bug in m_sjoin.c, lost a sendto_local_channel in the
  rewrite, which meant no MODE's were being sent... I "fixed" it previously
  in the wrong way, which resulted in weird five mode ops etc.



*** 20001223_1 by toot
. removed that pointless s_conf.h log
. changed +z to +a.. it's anonymous ops ;)
. "is now an operator.." notice doesn't need to show if they are global/local now
. slight fix to example.conf


*** 20001222_15 by db
- moved obsolete conf file examples into old
  purely for historical reasons



*** 20001222_14 by db
- simplified conf handling for yacc



*** 20001222_13 by db
- converted all use of IsGlobalOper and IsLocalOper to IsOper
  there is no local oper now



*** 20001222_12 by db
- removing local oper references, removing bloat...



*** 20001222_11 by db
- Ok, ALL the old support for old style confs is gone now, except for K/D lines
  That means IF YOU HAVEN'T CONVERTED FORMAT YET, DO IT NOW,
  OR IT WILL NOT RUN. capiche?
  I'll be able to simplify the parser in a bit a little more.



*** 20001222_10 by db
- ok. attach_cn_lines() was just plain wrong.
  The code was matching on hostname(ip) instead of servername
  One needs to look up by servername, then check if the hostname/ip matches..
  This explains why I had problem with multi servers on same host but different
  names.

  I think I got this right... but I am NOT sure if it works for hostmasked
  servers properly. that has to be verified asap. Might need a match()
  in the code.. 




*** 20001222_9 by wcampbel
1. Cleaned up a comment and trailing blank lines from m_oper.c
2. Added an md5 based mkpasswd.c, which works on FreeBSD 3.x/4.x and Linux
   glibc.  Known NOT to work on Solaris 2.6 and Cygwin.


*** 20001222_8 by wcampbel
1. Added an example of user and host in the shared section
2. Updated opers.txt some more
3. Added OMOTD to the REHASH help message
4. STATS P shouldn't show to non-opers


*** 20001222_7 by db
- tiny bug fix for logging



*** 20001222_6 by db
- massive addition to add extra parameter to struct Message
  this will enable us to have the parser handle parameter counts
  properly in all cases before it even gets to the module it is calling.



*** 20001222_5 by db
- use irccmp() not match in m_kline for "ON" parser duh
- use irccmp() not strncasecmp in m_set.c
- slight fix for stupid memory leak in class.c found by einride
- use POSIX non blocking now all the time in s_bsd.c
- added log entries for bad parse in s_conf.c
- cleaned up more comment blocks 



*** 20001222_4 by wcampbel
1. Don't invalidate entire blocks just because they have an error
2. Fixed SMALL bug with oper_admin


*** 20001222_3 by wcampbel
Document directed K-lines


*** 20001222_2 by db
- fixed logging botch for tklines



*** 20001222_1 by db
- modifed m_kline to add directed klines

  All the following should work

kline directed at a specific server
  /quote kline user@host ON server :reason 
  /quote kline [time] user@host on server :reason

kline directed at all servers
  /quote kline user@host on * :reason
  /quote kline [time] user@host on * :reason

original normal local klines

  /quote kline user@host :reason
  /quote kline [time] user@host :reason 



*** 20001221_21 by ejb
- moved maximum_links to ircd.conf


*** 20001221_20 by ejb
- RFC1035_ANAL is always defined now.


*** 20001221_19 by db
- stats v should not be shown to users
- neither should stats h



*** 20001221_18 by wcampbel
Brought convertconf up to date.  It now produces a valid -7 conf.
Anyone mind if I add some more test lines to the test ircd.conf in tools?


*** 20001221_17 by db
- non opers should not be able to do /stats ?



*** 20001221_16 by db
- removed local opers, its obsolete with oper flags besides
  users can probe which server an oper is on...



*** 20001221_15 by wcampbel
Removed global from example.conf as local opers no longer exist.
Added a "What's New" document giving a brief overview of the new Hybrid 
 featues.


*** 20001221_14 by wcampbel
Add some of the new oper commands to opers.txt


*** 20001221_13 by wcampbel
Document Diane's new Redirect options


*** 20001221_12 by db
- removed allow_bots from convertconf.c
- removed example of allow_bots ircd.conf.new



*** 20001221_11 by wcampbel
Documented all currently working options


*** 20001221_10 by db
- added redirserv redirport to auth {} block 
  I've been wanting this one a long time, finally epic supports it. yay.



*** 20001221_9 by wcampbel
Updated the dependencies


*** 20001221_8 by db
- some casts to keep the compiler whining down



*** 20001221_7 by db
- updated blalloc.c from einride



*** 20001221_6 by adrian


XXX UNTESTED UNTESTED UNTESTED UNTESTED

(Go a broken CVS tree. :-)

* change HANDLED_OK to CLIENT_OK. God knows why the two return values from
  parse_client_queued() (at least from ircd_defs.h) turned out to be
  CLIENT_EXITED or HANDLED_OK. Lets hear three cheers for great coding!

* Changed parsed_client_queued() to return CLIENT_OK if everythign went well
  (it was returning a numerical value..)

* Actually listen to the return values of parse_client_queued() in
  determining whether to schedule antoher comm_setselect() or
  reregister the client in the flush list.

A bug was found where a fd was being thrown onto the flush list in
flood_recalc() which would then trigger an assertion. This won't call
comm_setflush() if the client has just exited.

What *should* happen in comm_checktimeouts() is there should be an
assertion that the fd is open (flags.open) before calling the handler..
just to be anal.



*** 20001221_5 by db
- missing m_dmem.c file from einride



*** 20001221_4 by db
- missing memdebug.c from einride



*** 20001221_3 by db
- added missing memdebug.h passed on by einride



*** 20001221_2 by db
- added einride's memory debugging



*** 20001221_1 by db
- the modes not propagating on sjoin was my fault. 
  channel_modes() set the +ntz in modebuf, which I then promptly
  walked over... one has to leave those modes in then add the +o and +v



*** 20001220_28 by db
- cleanups



*** 20001220_27 by ejb
- some more +z stuff.


*** 20001220_26 by db
- removed prototype for quote_setchide
- cleaned up formatting in channel.c



*** 20001220_25 by ryan
!ptr && ptr->bleah?
wtf?.. don't think so.. try || :)


*** 20001220_24 by ejb
- fixed m_sjoin() for +Z



*** 20001220_23 by wcampbel
Added a couple things to the bottom


*** 20001220_22 by ejb
- make ms_sjoin notice +z



*** 20001220_21 by ryan
write_log now is sure that logfile is not NULL and that the buffer
isn't overflowed (sprintf -> snprintf)


*** 20001220_20 by db
- added sendto_realops on gline (flame)
- capitalized "ping timeout" to "Ping timeout"
 


*** 20001220_19 by ejb
 -made +z work properly


*** 20001220_18 by ejb
- fixed ircd_lexer (oops)


*** 20001220_17 by ejb
- removed hide_chanops from config since its not used anymore.



*** 20001220_16 by ejb
- added umode +z, hides ops on channel (replaces hide_chanops=yes)
- changed format of 004 numeric



*** 20001220_15 by wcampbel
example.conf is now correct for the current state of the parser.
All that is needed now is more documentation on the options


*** 20001220_14 by db
- patched m_gline.c from fl_
- patched ircd_parser from Walter Campbell



*** 20001220_13 by ejb
- added note about using `send-pr' to report bugs
- added note that cygwin is no longer support.


*** 20001220_12 by ejb
added GNATS support for ircd.
currently using a gnats db hosted on leguin.org.uk, can be changed
if needed.



*** 20001220_11 by ejb
Directory /cvsroot/ircd-hybrid-7/gnats added to the repository


*** 20001220_10 by db
- added notification to target when put on and taken off accept list



*** 20001220_9 by db
- fixed wallops so it doesn't add the "WALLOPS" message, uneeded.
- updated INSTALL and CIDR docs from Walter Campbell



*** 20001220_8 by db
- fixed stupid in m_wallops.c it was not showing oper wallops but was
  showing server wallops



*** 20001220_7 by db
- shared {} can now have user/host for user@host of oper allowed
  to place a remote kline from server given by name.

- updated the lazy link docs a bit, its badly written, fix.



*** 20001220_6 by db
- I hate furry logic when I'm tired. 



*** 20001220_5 by db
- TOPIC_UH is =gone= but was still in parser/lexer and m_topic.c
  removed. Also added code to hide the always present topic u@h
  if chide is on.



*** 20001220_4 by db
- I had interchanged name/host oops



*** 20001220_3 by cosine
connect timeout problem fixed


*** 20001220_2 by db
- fixed convertconf to bring it in line with current conf file format
  it does a reasonable first pass job, though you still might need to
  tweak..

- We were missing "shared" keyword in new conf file. This is vaguely worded
  to allow us to support "shared klines" "shared locops" etc. should
  we choose to do so... If I had time, I would extend it to allow
  specification of remote user@host as well... and whether it applies
  to klines/locops/unkline etc. shared resources...

- provided I hear back from adrian after a successful conversion of
  his conf file, I'm going to nuke most of the gook in oldparser.c
  so it only deals with 'D' and 'K' lines.. I'll likely rename it as well
  kdparser.c maybe..

- parse.c has a bug. but its late for me, I'll look at it after some sleep
  maybe is- and I can look at it together. The problem is simple...

ISON nick1 nick2 nick3...... nick20

all nicks at 15 to 20 should go into the last parv[]
not be truncated... at a space. Otherwise we break ISON for sure, and
likely other things...

- Adrian can you move logs into /logs from /etc ? pretty please? ;)

 


*** 20001220_1 by db
- don't send on a nick change if the nick hasnt' been seen on a lazy
  link server...



*** 20001219_11 by db
- fixed double free in invites
- fixed prefix botch in m_invite() using sendto_anywhere()
  but adding a prefix myself. oops. sendto_anywhere does its own prefixes.



*** 20001219_10 by db
- cosine...
	/* XXX THIS IS A STATIC */
#if 0
  comm_connect_callback(fd, COMM_OK);
#endif

in ircdauth.c

  It won't compile like that

- This looks like it works finally .... lazylinks

- removed no longer used option in example.conf
 



*** 20001219_9 by cosine
iauth is now working again


*** 20001219_8 by db
- lazylinks final form. New nicks introduced after the burst, are
  simply passed on. The reason is simple. SJOIN would have to be modifed
  to pass new nicks onto ll servers, and its a pita. SJOIN needs more
  rewriting before I attempt that. ugh. So for now, any new nicks that
  join the network, get propogated to the LL leaf as normal. The hub
  does not burst nicks at all, it bursts channel back ON request of 
  a cburst from the ll server, as it does so, it SJOIN's the nicks needed
  as well as SJOINing the channels requested. Nicks that are on the server
  but not sjoin'ed to a channel, will be propogated to the LL leaf
  when they join a channel, not before. i.e. if you are nick A on 
  hub HUBA you will not be nick propogated to the leaf until you join
  a channel, or you /quit and rejoin the network. Simple?
  Capiche?



*** 20001219_7 by ejb
- made modlist return a numeric
- put ms_quit back in (oops).


*** 20001219_6 by ejb
- added client_exit:
   *** Signoff: foo (Client Exit: foo)
- removed ms_quit.



*** 20001219_5 by db
- removed goto in channel.c dealing with invex



*** 20001219_4 by db
- This completes most of the full LL nick implementation...
  nicks unknown to a leaf LL must not have information sent to that LL
  only when introduced i.e. when they JOIN a channel or are /whois'ed
  /who'ed etc. are burst onto the LL leaf. 
  a /msg to a nick that only exists on the hub will fail ATM since
  m_message.c is not set up to burst the target nick onto the LL leaf.
  However, doing a /whois of the target first, will make the nick
  available. It will be simple to finish this part.. But after I get some
  sleep. 



*** 20001219_3 by db
- show the name of the server sending a CBURST if its not LL



*** 20001219_2 by db
- nick LL are almost there...
  Now, nick changes for nicks that the hub does not know about on a leaf
  ll server are not sent on to that leaf.
  This still means a /msg nick where nick is not known yet
  will fail, but a /whois will "burst" that nick onto the ll server...
  So, privmsg/notify should do a nick burst... ditto on ison
  Basically what now happens is, the ll server begins to become "aware"
  of nicks it needs to know about, just not all of them unless it asks
  the uplink...



*** 20001219_1 by ejb
- make invex code actually work.



*** 20001218_7 by db
- modifed lazylinks partially, to not send a full nick burst..
  still some work to do on this..
- added client_burst_if_needed() ... it checks to see if the given
  server pointer is a server, is a lazylink, and if it does not
  know about that given client, it bursts the nick.
- A nick that is not known on a leaf, will be nick collided ! if it
  changes nick. Thats next folks.. removing the sending of nick
  changes to leafs that don't know about that nick.
  


*** 20001218_6 by ejb
- remove whois_notice stupidity
- +a umode is now set automatically for admin=yes; opers, and cannot be changed.



*** 20001218_5 by db
- ok. redid the way the bitmaps were cleared for lazylinks.
  the old code walked all the global channels, clearing the
  lazyLinkChannelExists bitmap of the leaf servers bit.. Now the code
  keeps track of which channels/clients have these bits set, and only
  walks those lists when a lazy link server quits.
  This adds new lists to ircd.c, new bitmap to client struct, new call
  in m_cburst.c .. client.c modded to call remove_lazyLink_flags()
  new code added in s_serv.c to add remove_lazylink_flags() and to add
  add_lazylinkchannel() and add_lazylinkclient() functions to s_serv.c



*** 20001218_4 by bill

- removed compile-time warnings caused by fbputs()


*** 20001218_3 by db
- still more cleanups
- removed superflous sjoin code, it was already done by send_channel_modes
  duh.



*** 20001218_2 by bill

- forgot to remove a conflict


*** 20001218_1 by bill

- changed all file_open() and file_close() calls to fbopen() and fbclose()
- changed all write()s to fbputs()s
- updated dependancy file
- added strerror() msgs to failed file i/o logs/server notices
- moved FBFILE struct from fileio.c to fileio.h


*** 20001217_9 by db
- rewrote m_gline.c to use fbopen and friends consistently
  removed "safe_write()" entirely. BLOAT



*** 20001217_8 by db
- massive change but its really quite simple..
  mod_add_cmd was taking two params, when only one was really necessary.
  first was command name, second was the Message entry.. the command
  is available from msg->cmd, so why duplicate it? lead to errors
  ditto on mod_del_cmd()
  sooooo all modules had to be rewritten for this new world order...

- Also cleaned up a lot of missing definitions for functions..



*** 20001217_7 by cosine
just to get things compiling again


*** 20001217_6 by db
- added global uplink cptr valid for leafs ONLY



*** 20001217_5 by db
- added vhost support, should work now
  in doing, removed an extern not needed any more in s_bsd_kqueue.c
  s_bsd_poll.c and s_bsd_select.c... thats when I noticed... local[]

- first crack at cleaning up s_bsd_select.c so it will compile. I just
  removed local[] from it for now, the rest is adrian's MUAHHAHAHH!
  It still won't compile, but ... its a start



*** 20001217_4 by bill

- added _k9_ (jeremy, wowsers.) to credits as a contributer


*** 20001217_3 by db
- I ran it through lint, discovered a pile of unused variables unused
  parameters. Removed... and made a function static in channel.c
- added einride and hwy to credits, give them some vanity.
- fileio.c had an obvious bug, but we never used fbgetc() so it didn't 
  matter. pro is going to look at the ircu version, to see if we can
  fold that one back in without issues.



*** 20001217_2 by db
- removed the two pass exit procedure in check_klines check_pings
  it was =only= done in the first place to get around the local[] 
  re-arrangement nonsense in the original code. This is long gone..



*** 20001217_1 by db
- moved gline expiration to be an event started from ircd.c at startup
  right now its run every half hour. That should be sufficient.

- also cleanedup s_gline.c s_gline.h m_gline.c while at it. Removed
  unnecessary and obsolete extern definitions. Made a couple of functions
  static. Found a duplicate definition for glines in s_conf.c!

- Fixed LazyLink join to a non existing channel on the hub. The 
  hub has to actually create the channel but not SJOIN it to anything.
  Then the hub can mark this channel as a lazy link channel with the leaf
  being "interested" in knowing about the channel. The timestamp should be
  set to the highest possible time, so its always overruled. It also
  should be expired if necessary.i.e. lazy link server dies after doing
  cburst request but before received LLJOIN.
  Removed the useless lazylink references in m_join.c duh. 



*** 20001216_9 by db
- fixed join 0 grrrr
- m_lljoin should give member names when joining
- lazy links flag should be set when joining
 


*** 20001216_8 by db
- lazy link lljoin was relying on can_join which needed to be moved into
  channel.c from m_join.c
- applied einrides conf changes, which will remove the original I line
  conf from an oper replacing it with the new one.



*** 20001216_7 by db
- ok did some more clean up on LazyLinks connect works fine more or less
  The nicks are SJOIN'ed one nick at a time to the leaf, That should be
  fixed.
- new channel creation has a glitch somewhere, the LLJOIn isn't
  being seen by the client, and it has to do a double join. hrmmmpf



*** 20001216_6 by db
- remote lazy link /list was broken, missing ms_link in handler



*** 20001216_5 by db
        Included here is a patch which adds the function strip_tabs
        to irc_string.c; the function converts all found tabs to
        spaces, while copying the string.

        The reason I wrote this is because in h7, when HUPd or
        /REHASHd, the server will show opers any bad lines it
        finds in ircd.conf.  Most of these lines start with tab,
        so, displaying the actual tab character is irritating for
        users who use something other than an ircii derivative.

        It applies to ircd-hybrid-7-20001216-103810.tar.gz, which
        adrian gave me this morning.  I tested it, and it's being
        used on hybrid.best.net's test H7 server.

        Another function which might be useful would be one which
        squeezes excessive whitespace into just one space itself
        (eg. tr/ / /s (or "     " --> " ")).

-- 
| Jeremy Chadwick                                   yoshi@parodius.com |



*** 20001216_4 by db
- fixed lazy links. I was trying to use the extended "join new nick
  to network" SJOIN instead of the simpler "join this nick to channel" SJOIN
  oops. That would collide everyone. Sooo that involved a pile of 
  fixes and new functions to properly send SJOIN channel. Might be able
  to simplify reduce recyle functions later...

- Oh documented a few more globals in ircd.c and ircd.h, also removed
  a couple of references to no longer existing variables.. LRV etc.



*** 20001216_3 by adrian


Add a blank line after the distclean: tag, so make knows its a blank
target.



*** 20001216_2 by db
- ask for MODE on channel if LL



*** 20001216_1 by toot
. let opers see full /lusers report even if server-hide is on
. parse() can check the number of params for a lot of m_commands


*** 20001215_15 by db
- m_mode.c had some twisted logic. Corrected. *duh*
- did some variable renaming in channel.c chname instead of "real_name"
- fixed two bugs pointed out and corrected with Walter Campbell in
  I and D line handling. notably, the conf host string wasn't being updated.



*** 20001215_14 by db
- fix for gecos blocks submitted by Walter Campbell



*** 20001215_13 by db
- added patch contributed by Walter Campbell, it adds connectfreq
  to a class block. Note, it is a synonym for class_number_per_ip



*** 20001215_12 by db
- removed unused variables found with -Wunused
- removed an extra space in parse.c



*** 20001215_11 by db
- missing clean: target in Makefile.in for doc



*** 20001215_10 by db
- added GLINE_PATH gline.log missing from config.h ircd.c



*** 20001215_9 by db
- missing parc check in m_ungline



*** 20001215_8 by db
- committed Walter Campbells changes to INSTALL



*** 20001215_7 by db
- a few changes to hide ip's of servers even from opers, given the
  new world order *sigh* on EFnet...



*** 20001215_6 by db
- tiny tweak to send_capabilities to clean it up



*** 20001215_5 by db
- I didn't get it right. 
  So for now, just set the eob flag for later use. 



*** 20001215_4 by db
- I think I got this right.
  EOB message now sets flag in server struct saying its sent EOB,
  if EOB is set in struct in sjoin, warning message is sent out
  about HACK



*** 20001215_3 by toot
fixed some bent logic in whowas


*** 20001215_2 by db
- removed obsolete BUFFERPOOL from config.h and m_info.h



*** 20001215_1 by toot
replaced some stuff that'd gone missing in slow_lusers


*** 20001214_15 by db
- redid parse.c do_numeric, thats where our remote stats bug was..
  I was adding an extra ':' where I shouldn't have been. duh.



*** 20001214_14 by db
- don't count opers again in /stats L



*** 20001214_13 by toot
. moved dots_in_ident to an ircd.conf option
. removed some d_line remains..


*** 20001214_12 by db
- added modlist admins can now list all loaded modules.



*** 20001214_11 by spookey
Minor _version misplacement.. (above the #else ,  not below it =P)


*** 20001214_10 by toot
ripped out some more unused stuff


*** 20001214_9 by db
- missing show_opers in m_stats.c found by Walter Campbell
- duplicate end of stats in gline pointed out by toot



*** 20001214_8 by toot
undid accidental config.h change :P


*** 20001214_7 by toot
removed some unused things (quiet_on_ban, and moderate_nick_change left overs)


*** 20001214_6 by db
- missing show_opers(sptr) in m_stats.c found by Walter Campbell



*** 20001214_5 by db
- removed a bunch of useless B line stuff
- put sanity test into m_gline.c so it wont' core on a NULL glinefile



*** 20001214_4 by db
- YOU missed an #endif toot! ;)



*** 20001214_3 by db
- trivial move of basename() to save a free() if not an admin



*** 20001214_2 by toot
cleaned some PATH stuff a bit


*** 20001214_1 by db
- removed find_class(0) from m_kline.c was never used, no one ever
  referred to the class on a kline, BLOAT gone.
- /rehash caused opering clients to core server, traced to an incorrect
  find_class(0) 0 should return "default" class not 0. found by einride.
- first fixes to lazy links, don't use , it nick collides everyone
  still needs fixes



*** 20001213_16 by db
- HUB info does not belong in m_admin.c



*** 20001213_15 by db
- fixed typo spotted by Walter Campbel in oper_admin



*** 20001213_14 by db
- fixed small typo in the parser, spotted by Walter Campbell



*** 20001213_13 by spookey

  --disable-openssl enabled openssl... that didn't seem right..

*** 20001213_12 by db
- tiny update to send.txt, sendto_common_channels 



*** 20001213_11 by db
- Ok the mystery of the missing NICK has been solved. (hwy/toot?)
  If you weren't on a channel and you did a nick change, you never got
  a nick change from the server. oops. 
  Its poorly documented in the old sources... ick... sendto_common_channel
  says its not supposed to send to the originator, but yet it does ...
  *sigh*



*** 20001213_10 by db
- when msgtab went away, due to the hash table replacement,
  m_stats.c, m_help.c had to be rewritten. I had to add a new 
  report command in parse. I stumbled across an apparent compiler bug..
  the hash table is defined to be 387 entries, but the report function
  was walking in to the poll fd lists at 385... Something is screwy here
  perhaps a rounding error? In any case, thats why the weird +10 
  in parse.c msg_hash_table[MAX_MSG_HASH+10];



*** 20001213_9 by db
- ripped out the trie (tree parse) code that Roger wrote. Too hard to
  debug for now. Replaced with a simplistic (very) hash table. The hash
  function is =horrid= for now.



*** 20001213_8 by adrian


How'd I forget to pre-initialise linebuf_initialised to 0? Its implied
due to it being a global variable, but _still_ ..



*** 20001213_7 by db
- removed an obsolete line from the example.conf 
- added s_gline.c that I forgot



*** 20001213_6 by toot
fixed some makefile stuff


*** 20001213_5 by db
- I had changed RTLD_LAZY to RTLD_NOW in modules.c thus insisting
  on all names being resolved before loading. oops. should have done this
  earlier. pile of undeffed at run time names, mostly typos;
  but a few clear dependancies such as m_stats depending on stuff loaded
  only by m_gline ... sooo moved much of that in s_gline.c since
  s_conf.c is quite large enough thankyou.
- also redid m_invite.c so it will show the right channel name on an 
  invite to a vchan. removed the silly message to channel stuff on invites,
  it was referring to a no longer defined function anyway... BLOAT
  totally removed the need to be chanop before sending an invite, hence
  modified the lexer/parser to remove that option totally BLOAT
  removed the need to be +i before adding the invite block. who cares.
  BLOAT



*** 20001213_4 by db
- typo, it should be "server" not "servers" in class



*** 20001213_3 by db
- halfops wasn't being propogated by sjoin, so added quick change
  to pass the halfop along
- however... also added code to send halfops along as normal peons for now
  they still will have their halfops respected on their server, just
  no one else will notice. There should be a CAP_HALFOP added...
- tidied up and added more comments to m_stats.c



*** 20001213_2 by db
- urgh stupid typo sorry ! sorry sorry sorry!



*** 20001213_1 by db
- msg_tree_root has to be zero'ed in clear_msg_tree() or it causes
  odd problems esp. on redhat linux for some reason. NO idea why
  but the stray pointers left in it caused it to core nicely.



*** 20001212_9 by db
OH WHAT A BLASTED PITA
- Ok... a CONNECTING server must put the server its trying to connect to
  on the serv_list because its going to blindly send its server burst
  to its new uplink. But the server its connecting to is not strictly
  a server yet until the handshake is over ... oy
  SO, the connecting to server is put on the serv_list, so the connect
  burst will go through, but it might not be a server yet if the connection
  fails, so... I have to check on the server list as well as the unregisterd
  list to pull it off (in exit_client/client.c).. ugh ugh ugh...
- This breaks all the state information in ->state ugh. 
  A leaf server has a client (the one its connecting to) already in its
  serv_list (remember?) sooo it can no longer simply check for a non
  empty serv_list to allow a connection or not. NOOOO it now has to make
  sure that server in that list is the same one its trying to connect to.
  (in serv_establish/s_serv.c) UGH UGH UGH



*** 20001212_8 by adrian


Do build magick in the binary. Now, --prefix="foo" is reflected in DPATH
and is also reflected in the various PATH's there are.

The handling of the ETCDIR stuff is ugly and warrants instant death in
my eyes, but it works and it doesn't cause me to retch when I look at it
so I guess it can stay there until Someone Else(tm) fixes it.

Note that IRCD_PREFIX needs to be defined during the ircd and tools build.
I *did* try doing the squid thing - take config.h, pass a sed script over
it to map DPATH to @prefix@, and do it that way, but it might have made some
people throw up.

This completes tonights set of work which I just shouldn't have done.
Comments can be piped through cvs commit.




*** 20001212_7 by adrian


The very first step in sanifying the make and install process

* move opers.txt into doc like it bloody should have been
* make install work with each subdir's Makefile rules, rather than
  install_ircd
* create placeholders (blank) for ircd.motd and kline.conf

Its all far too complex to explain. Suffice to say, its neater.
Binaries and some of the config files (not the kline, motd) are
renamed to .old as a backup.

Now, do the binary ..



*** 20001212_6 by db
- folded in Walter Campbell's IPV6 patches



*** 20001212_5 by db
- verified the generated prefixes on a number of files
- umm the big bug was in serv_connect_callback() the newly connected =to=
  server was not being put on the serv_list... This mean that SJOIN's were
  not being propogated to a =connected to= server since the connectee
  had no idea it was supposed to.

  This was sorta obvious when /stats v returned 0 servers, and the 
  serv_list was 0



*** 20001212_4 by db
- fixed stupid bug in m_stats.c, acptr wasn't being set...



*** 20001212_3 by db
- oops. forgot to generate a prefix in sendnick_TS in s_serv.c



*** 20001212_2 by db
- don't core if a server is not found on the serv_list



*** 20001212_1 by db
- fixed m_trace.c so as to not use local[]



*** 20001211_15 by db
- fixed m_die.c to not use local[]



*** 20001211_14 by db
- not sure if I am closing all the fd's that should be closed here..
  the original code refers to connecting servers as well as unknown_clients
  perhaps connecting server fd's should be also closed?



*** 20001211_13 by db
- a client being made into a server, should be removed from the unknown_list
  this was happening in the new server establish code...
  This left an unknown client hanging around, not removed from unknown_list
  because it was now a server, not an unknown client.

- local removal was missed in m_stats.c, this meant /stats didn't work
  since it was never loaded. There are three other functions that have
  to be fixed as well... m_trace.c, m_die.c, m_close.c



*** 20001211_12 by db
- tiny comment fix in check_pings



*** 20001211_11 by db
- how did THAT get back in. removed local[] again *sigh*



*** 20001211_10 by db
- simple re-work to m_ison.c, rfc1489 is ambigious about how this should
  be handled...

The ISON command was implemented to provide  a  quick  and  efficient
   means  to get a response about whether a given nickname was currently
   on IRC. ISON only takes one (1) parameter: a space-separated list of
   nicks.  For  each  nickname in the list that is present, the server
   adds that to its reply string.  Thus the reply string may return
   empty (none  of  the given  nicks are present), an exact copy of the
   parameter string (all of them present) or as any other subset of the
   set of nicks  given  in  the parameter.  The only limit on the number
   of nicks that may be checked is that the combined length must not be
   too large as to cause the server to chop it off so it fits in 512
   characters.
...
   Examples:

   ISON phone trillian WiZ jarlek Avalon Angel Monstah
                                   ; Sample ISON request for 7 nicks.

...
  But the parser will break those up into parv[1] ......

  And the parser only presently handles 8 .. so Monstah wouldn't be parsed...
oops.

  Mirc apparently sends them "ISON nick1 nick2 nick3"
  But other clients must be sending them with a ':' to force parsing
of space separated nicks into one parv[1] (?)

  It appears that thats how hybrid-5 expects it. It has to come in as
"ISON : nick1 nick2 nick3" to force "nick1 nick2 nick3" into parv[1] !

  In any case, this code =should= handle both interpretations.  



*** 20001211_9 by db
- removed the last remnant of local[], was one hidden in s_serv.c
  the definition for it was hiding in s_bsd.c



*** 20001211_8 by db
- renamed send_channel_members to sendto_list_anywhere, to remain consistent
  in send.c with sendto_list_local. This really means we =could= set up
  the "GROUP" idea Roger postulated ages ago... Roger suggested something
  like this "NGROUP foo" "GROUP foo nick1,nick2,nick3" privmsg to 
  foo, sends to nick1,nick2,nick3 ... I suppose foo would have to have 
  disambiguitating prefix like $ so one could set up a group of users
  you wanted to talk to often..

- fixed s_stats.c to be consistent in only needing the client pointer
  passed, not both a client pointer and a nick.

- reverted to old CC options in modules -g -O2 etc.
  



*** 20001211_7 by db
- removed some unused variables



*** 20001211_6 by db
- unknown clients should be removed from the unknown_list on exit!
  or you get duplicates on the unknown_list and neat things like that.



*** 20001211_5 by db
- this gets rid of local[] 
  unknown clients are now placed into unknown_list, moved to
  serv_list (local servers only) and lclient_list (local client list)
  as appropriate. check_pings now scans the lclient_list, serv_list
  and then checks for unknown clients timing them out as appropriate.
  Now, the proper place to do PING checks is in s_bsd.c in
  comm_checktimeouts() using a timeout_handler (as pointed out by Adrian)
  ... Someone will have to check that unknown clients
  are also on this list, and get rid of that fixed sized fd_table...

- Seems I screwed up the inter-server NICK prefix and message , this
  caused all sorts of neat nick collides.



*** 20001211_4 by davidt
oops, didn't cvs add create_po..

*** 20001211_3 by davidt
attempted to tidy up config.h slightly

*** 20001211_2 by db
- removed unused variable



*** 20001211_1 by db
- m_eob.c was not reporting length of burst like it should have been
- m_squit.c I forgot to send out WALLOPS when squit matched local link
  NOT fully tested 'cause I need a remote server to split! 



*** 20001210_13 by db
- CAP_CHW works again between compatible CAP_CHW servers..
  Thats the /quote privmsg @#channel :message
  functionality borrowed from dalnet/ircnet?

Pending BUGS;
  - /msg $#hostmask is still broken across servers
  - /squit of a remote server appears to be broken

Pending re-work:
  - check_pings()/check_kline() should be reworked so as not to use a
    fixed size array...



*** 20001210_12 by db
- This fixes prefix on a nick change sent to local server.



*** 20001210_11 by db
- fixed length error in sendto_realops_flags



*** 20001210_10 by db
- re-wrote send_operwall, renamed as sendto_all_local_opers()
  this necessitated changes to send.c send.h send.txt
  m_connect.c m_locops.c m_operwall.c m_squit.c m_wallops.c
- cleaned up check_string() in ircd.c added more comments



*** 20001210_9 by db
- updated docs in send.txt
- fixed parser as per walter campbells patch



*** 20001210_8 by db
- cleaned up m_gline.c, STILL untested.
- removed unnecessary lines in ircd_parser.y due to removed botcheck
- only show stats 'G' to opers
- updated opers.txt, client.c to show leaving servers as well as 
  being introduced servers.
- cleanup_channels() wasn't being restarted when server was a hub,
  it should be always run now, to expire persistent channels.



*** 20001210_7 by db
- missed a place where send_trim() should have been used



*** 20001210_6 by db
- as promised, tidied up send.c added to send.txt document



*** 20001210_5 by db
- went through and removed a bunch of unused variables
- fixed sendto_channel_butone, need to generate both local and remote
  prefixes in this one. The function will need tidying up later.
- updated send.txt to include info on prefixes.



*** 20001210_4 by db
- Was missing proper prefix for normal privmsg to local channel



*** 20001210_3 by db
- removed last remnant of oratime



*** 20001210_2 by db
- new text file describing the send.c re-work.



*** 20001210_1 by db
- sendto_prefix_one is =gone=
- sendto_one should be used for local clients only, with prefix
  pre-built at time of use.
- sendto_anywhere is a somewhat saner replacement for sendto_prefix_one 
  (I think) it should be used ONLY when target client is unknown whether
  its local or remote, it will build the appropriate prefix itself in 
  that case. This makes it less efficient than sendto_one..
- I kludged send_message_remote() for now... adrian you might want
  to look at that... maybe we can get away with just always calling
  send_message() or add a short common function or something...
  send_message() should be for local clients (not servers(? only(?)
  perhaps i.e. send_message_local() and send_message_remote()
  sendto_one should be renamed sendto_local() (sendto_local_client)
  sendto_remote (sendto_remote_client) sendto_anywhere() sends to either...
  Too tired right now..

BUGS pending...
1) the horrid /msg $#host.mask to clients on remote servers is =broken= for now.
   (it works locally)
2) sendto @# chanop style messages is =broken= to remote servers for now.
3) Probably more *yawn* 
  


*** 20001209_17 by db
- oops, the missing .depend files



*** 20001209_16 by db
- rewrote sendto_realops in doing so I decided to combine sendto_realops_flags
  and sendto_realops()... I could have macro'ed sendto_realops() to
  call "sendto_realops_flags(FLAGS_ALL..." but that level of obsfuscuation
  I don't like.. soooooo I converted all sendto_realops to use
  sendto_realops_flags(FLAGS_ALL ... *fun*
- I removed two unused files for now, one to do with ZIPLINKS one
  to do with timings.. it wasn't used, thats what CVS tree is for, so there.



*** 20001209_15 by db
- removed little used function... will have to replace functionality
  for remote send of KNOCK and msg @#channel code...



*** 20001209_14 by db
- I was using ->user instead of ->username in prefix. *DUH*
- removed pretty much identical function in send.c (MORE BLOAT GONE!)
  using another function to do the same job. (sendto_list())



*** 20001209_13 by db
- ok. in the new world order... prefixes are generated at the top level
  instead of being grunged out in send.c... This gets rid of incredible
  idiotic connipations that were happening in send.c... I've only done 
  this for =LOCAL= sent to server messages so far, hence ALL uses of
  sendto_channel_local you must work out your own prefix. Its not hard,
  and is worth the bother. This modified a bunch of modules.

- I have also preformatted the stupid string to be sent to each client
  in sendto_channel_local AT the top instead of re-formatting it each
  and every time a message is sent to a client. like *duh*



*** 20001209_12 by db
- quick fix to fix prefixes on LOCAL channels only...
  prefix adding was =hidden= in underlying send.c functions. 
  NOT a good idea IMO.. this makes its harder to optimize code...
  fughly anyway, I think I got the major prefixes fixed for now.. 



*** 20001209_11 by db
- ummmm no check for parc in mo_undline leads to core if no args given



*** 20001209_10 by bill

- added duration to EOB snotice


*** 20001209_9 by db
- rationalized use of serial numbers for unique sending to client
  this removes yet another array "sentalong" yay.
  This also makes server_burst use the same serial # idea instead of
  nickissent byte flag.
- I note that prefixes really should be sent for local channel JOIN's
  ooops. sendto_prefix is =fugly= though. lemme think about it.
  meanwhile, all JOIN's by remote clients look "weird" as they are
  missing their user@host prefixes...



*** 20001209_8 by bill

- changed NONWILDCHARS to 2


*** 20001209_7 by db
- tiny fixes to fix typo's 



*** 20001209_6 by db
- removed redundant flag in client struct, if localClient is non NULL
  then its a local Client. simple. no need for an extra local_client int flag.
- removed bloat from client struct, no longer being used pointers removed.



*** 20001209_5 by db
- renamed yet another poorly named function...
  sendto_channel_remote makes more sense than sendto_match_serv 
  its sending stuff to a channel remotely folks *sheesH*



*** 20001209_4 by db
- removed unused extra parameter in sendto_channel_local
  I think I got them, all ;) if not it will just core mysteriously.. ;)



*** 20001209_3 by db
- removed obsolete #ifdef's in m_info.h
- removed obsolete comments in m_unkline.c
- removed SLAVE_SERVER junk fro m_locops.c
- removed obsolete #ifdef junk in s_debug.c



*** 20001209_2 by db
- renamed confusing sendto_channel_butserv to sendto_channel_local
  it reflects better what the stupid function does
- changed all references to src/m_xxx.c file names in modules to
  read modules/m_xxx.c
- removed yet another #ifdef this time one in m_info.h



*** 20001209_1 by db
- added server greet message (# since restart)
- fixed stupid in m_sjoin, you can have more than 4 ops/nicks per sjoin *oops*



*** 20001208_17 by db
- m_who is less broken for single nick who, but it looks broken to me
  still... checked on efnet, it looks broken.



*** 20001208_16 by db
- added m_eob to modules, this means changes to handlers.h, msg.h, Makefile.in
- also had to modify s_serv.c to send EOB message
- fixed stupid typo in m_admin.c, it was claiming to be m_version.c



*** 20001208_15 by db
- sped up local op code...



*** 20001208_14 by db
- sped up m_sjoin.c somewhat... also fixed a bug where the code
  would relink the same vchan over and over again to the root. oops.
  This resulted in 277 #ircd-coders !nympho !shig !shig !shig !shig !shig !shig !shig !shig
  oops.
  Still have to deal with empty vchans...



*** 20001208_13 by toot
depend updates


*** 20001208_12 by db
- removed unnecessary strcat in m_whois



*** 20001208_11 by db
- Show the top channel name on a subchannel 



*** 20001208_10 by db
- report throttling as top channel name if in vchan



*** 20001208_9 by db
- on /mode #channel show the root channel's TS if on a vchan



*** 20001208_8 by db
- fixed remote join bug, it was joining the root channel instead of the
  vchan on remote servers due to the wrong name being passed to the SJOIN



*** 20001208_7 by toot
gline_file isn't used anywhere.  and it was also the one
making the '1 rule not reduced' error :)


*** 20001208_6 by db
- hide idle time in whois if in server hide



*** 20001208_5 by toot
. added 'h' to MYINFO mode list
. made network_name/desc an ircd.conf option.
. fixed the reading of idletime, hide_chanops and hide_server from ircd.conf


*** 20001208_4 by db
- UNGLINE was missing from init for m_unkline.c



*** 20001208_3 by db
- cleaned up m_gline.c module considerably, but still untested.
  Need to enable it locally =AND= have three servers at least to 
  test properly with. It looks like it =should= work...



*** 20001208_2 by db
- missing ':' in sent KLINE would break up reason field in parser



*** 20001208_1 by db
- quick #ifdef of excess flood for tonight. its late
- redid send_modelist
- channels that exist for less than 30 minutes are not persistent
- redid m_sjoin



*** 20001207_17 by adrian


* add bufhead->numlines and linebuf_numlines() - this implements line count
  tracking so you can see how many lines are being used (complete/incomplete)
  in the linebuf. Now people can implement linecount flooding.

* update bufhead->len correctly. It was being done in linebuf_flush() but
  not linebuf_get() which meant that the recvq would grow, and the flood
  protection (which used linebuf_line() rather than linebuf_allocline()
  until about 5 minutes ago) would eventually kick off a user.

  Now the tracking is done in linebuf_done_line() where it should have been
  all along. Honestly, the crack I must've been smoking then ..



*** 20001207_16 by db
- fixed example.conf connect example



*** 20001207_15 by db
- removed botcheck which is obsolete, this gets rid of the one rule
  never reduced error in the parser...
- updated the example.conf to include server links, important that..



*** 20001207_14 by adrian


Use linebuf_alloclen() rather than linebuf_len() for flood tracking.
This should be done anyway, to stop people taking up inordinate amounts of
memory by flooding lines with only a few characters, which can be just
as annoying.



*** 20001207_13 by db
- non op trying to set a channel limit should get a not chanop message



*** 20001207_12 by db
- fixed two bugs. one bug in m_join.c prevented JOIN 0 from being 
  detected.
- second bug was one I introduced into send.c when I added lazylinks
  I put a test for a NULL chptr into the wrong spot... This probably
  affected other commands then just JOIN 0...



*** 20001207_11 by db
- class is a string not an int now (testline)
- redid m_sjoin... erg we are going to have to do some serious sanity
  checking on send.c sendto_channel_butserv tries to be "helpful"
  and uses vsendto_prefix_one() which promptly tries to put the
  proper prefix on the string. ugh. I already KNOW what prefix I want
  I don't need this overhead. time to re-examine asap



*** 20001207_10 by db
- fixed stupid in channel.c with ban sending... used banptr forgot
  the ->banstr oops.
- removed totally unused variable in s_user.c LastWallopsTime...
  wallops is no longer paced. rah rah.



*** 20001207_9 by db
- first cut at cleaning up m_gline.c its still fugly... but cleaner
- added CAP_GLN for capable of gline servers. I didn't realize this
  wasn't here before. ugh.



*** 20001207_8 by db
- fixed m_stats.c so /stats E,F as non oper gives No permission error



*** 20001207_7 by db
- m_message.c would core if the channel was +m and you tried to
  message it. duh



*** 20001207_6 by db
- missing parc test in m_knock.c caused it to core on knock with 
  no args. spotted by poptix...



*** 20001207_5 by db
- missed committing new conf file because I forgot to rename it from
  ircd.conf to example.conf grrr



*** 20001207_4 by db
- Like a surgeon who leaves a scalpel inside a patient, I left some
  debugging code inside m_names.c ... some extra sendto_realops...
  *blush* at least the patient hasn't died ...



*** 20001207_3 by db
- added example of new style conf file (finally)
- renamed old ircd.conf example as ircd_old.conf



*** 20001207_2 by db
- fixed m_sjoin.c for vchans finally. They work just fine now.



*** 20001207_1 by db
- fixed obvious bug in sjoin code for vchannels. its still broken
  for remote joins, but getting there.
- allow halfops to +imtsp channels like full ops



*** 20001206_13 by db
- reverted previous m_kline.c change in favour of...
- letting s_conf.c figure out if the oper placing the kline is remote oper
  or not, and logging it appropriately.



*** 20001206_12 by db
- cleaned up m_server.c some more. ugh. it was horrid



*** 20001206_11 by db
- riedel's patch to keep from adding nicks twice to an accept list



*** 20001206_10 by db
- redoing RPL_VCHANLIST so last %s is gone, since I'm building
  up the channel sublist myself



*** 20001206_9 by db
- m_accept was using the wrong numeric for "no such nick"



*** 20001206_8 by db
- ummm there is a bug where an struct Confitem aconf will have a NULL
  c_class (pointer to class) this will core the server in attach_iline
  this should be fixed, meanwhile... validate the pointer is non NULL
  before trying to dereference it for now.



*** 20001206_7 by db
- transposed user/host in m_kline.c



*** 20001206_6 by db
- m_capab.c was missing an MFLG_UNREG hence was never being called
  in some cases. oops



*** 20001206_5 by db
- cleaned up m_server.c, removed some redundant code



*** 20001206_4 by db
- "CAP_KLN" string was missing in s_serv.c



*** 20001206_3 by db
- added mr_capab to handlers.h 
- changed m_capab to use mr_capab, remember capabilities are sent
  while client is still unregistered
- fixed another parser bug pointed out by Walter Campbell
- added sanity test to del_all_accepts



*** 20001206_2 by db
- reworked anti channel flooding to allow chanops/voice to flood
  their own channel with impunity. This will allow them to at least
  set +m if the channel really is flooded!
- fixed parser error spotted by Walter Campbel (Hwy101)



*** 20001206_1 by db
- on_accept_list can be on a remote client, having it on the localClient
  part will lead to a core..
- hacked out a portion of adrian's flood control for now.. to get
  the darn thing to do a server link. I'll look at it in the morning
  when I am awake.



*** 20001205_10 by db
- updated TODO
- c lines were blasted when ZIPLINKS were removed, put them back
  as normal C lines for now
- up check ping event time to 30 seconds
- close fbfile after parsing in .include
- check for NULL find on strchr('\n') in initconf



*** 20001205_9 by db
- moved check for flood attack on channel after check can_send
  


*** 20001205_8 by db
- ok, added channel throttling tested both channel throttling and message
  throttling, both appear to work. Removed FLOODTIME, default to always
  one second for now. 



*** 20001205_7 by db
- redid m_set.c precalculate newval etc.



*** 20001205_6 by db
- committed Jeremy Chadwicks (best.net) m_set table driven code
- sprinkled some asserts into linebuf.c
- fixed typo in m_admin.c



*** 20001205_5 by db
- cleaned up class.c adding more comment blocks
- cleaned up s_conf.c to actually use nice defines instead of cryptic #'s
- fixed typo in linebuf.c



*** 20001205_4 by toot
removed zlib from configure, and updated version number


*** 20001205_3 by db
- updated opers.txt for h7, its more or less right now
- added new 'u' flag for opers, show unauth clients on that flag instead
  of 'c' flag
- moved 'u' flag to 'g' for CALLERID
- upped flooding parms slightly some more... still set too low I think
- changed DRONE_FLOOD etc. to plain FLOOD... This is generic anti
  flooding code for the =recipient=



*** 20001205_2 by db
- cleaned up these functions, two arguments when 1 is quite enough
  this makes them consistent with other functions that only pass
  the struct Client *sptr. No need to also pass the nick.
- changed wording on vchan's at toyota's suggestion.



*** 20001205_1 by db
- added rest of accept code.
  client puts themselves into +u mode, this disallows casual messages
  to that client. The source gets a "am on server side ignore" from the
  target, the target gets a message saying source has messaged them, 
  but paced to once a minute.
  a client in +u mode (or any other mode actually) can add clients
  it will accept messages from using /quote accept nick
  delete them using /quote accept -nick (perhaps /quote delete nick would
  make more sense?) a list with /quote accept *



*** 20001204_17 by db
- found the cause of the blalloc bit already cleared error..
  dlink_node was already been cleared in remove_user_from_channel
  exit_one_client was trying to also free it.
- added sendto_cap_serv_butone for sending to capable servers
  added rudimentary remote kline code to use this. NOT TESTED
  until I get a remote server up.



*** 20001204_16 by db
- removed duplicate function from m_kline.c replaced with function
  already in place but unused in s_conf.c duh. can we say BLOAT?



*** 20001204_15 by db
- fixed bug in parse_client_queued to do with opered clients.
  code was nver resetting lcptr->sent_parsed = 0 and actually_read = 0
  so poor oper would no longer be listened to after a while...
  Replaced goto with a if (!IsPrivileged... macro... 
- removed last remnants of USER_UH defines ... GONE



*** 20001204_14 by db
- don't devoice/voice if chanop



*** 20001204_13 by db
- identity of who set a ban should be hidden in channel op hide mode



*** 20001204_12 by db
- empty vchans shown on list have no clients to key off of,
  return a timestamp for now. You can't join them still since 
  the join code doesnt' know anything about joining on a ts key.



*** 20001204_11 by db
- class.c get_client_class returns a string class name now
  It was trying to use a struct ConfItem as a class pointer. oops.
  As conf's now have a pointer to the class name anyway, its easier
  to pull it from the conf anyway. If its NULL, return 'default'
  string for now.



*** 20001204_10 by db
- lost a 433 (nickname in use error) somewhere in the way,
  put it back in.. m_nick.c



*** 20001204_9 by db
- had logic wrong in can_send



*** 20001204_8 by db
This is a patch which implements client send flood protection.
This is the type of flood where someone goes

/join #foo
/exec -o cat bigfile.txt

and they quit with "Excess Flood"  .

Note that if a client floods, its allow_read value will decrease. If they then
stop flooding, their allow_read value will increase regardless of whether
there is any pending data .. this flushes the output quicker if and only
if they stop flooding.

I've managed to cause this thing to go tits up a few ways when having
a client flooding a channel and it gets killed:

* a blfree bitmap error. Diane, Can you please check out why ? :-)
  I think this is related to your Slink death ..

* Hrm. the "client connecting" notification seems to panic if I'm an oper and
  see someone connecting to my local server.

* various strange deaths in the parser.. this one confuses me

* If a client gets killed for flooding, sometimes you'll see one or two
  lines *from* that client appear immediately after the exit. This is most
  probably my problem and its going to be a queue flushing issue ..

Can someone please tidy this up over the next week and commit it? I'd
like to have a hybrid-7 beta out, and i'm now going to be minus some serious
time until Christmas.

Thanks!

committed for now...

----- Forwarded message from Adrian Chadd <adrian@nympho.cacheboy.net> -----



*** 20001204_7 by db
- +m moderated channel logic was missing oops.
- removed count of servers in server hide mode in /lusers
- /links will show current server with hop count of 0, everyone else with 1
  in server hide mode to all but opers
- allow half ops to set topic
- removed zlib, better to use system installed lib



*** 20001204_6 by db
- ripped out LIMIT_UH for now. BLOAT BLOAT BLOAT
  in preparation for doing IP throttling ...
- ripped out #ifdef for invisible off or on, that should be in  
  conf anyway. ugh



*** 20001204_5 by db
- redid clear_channel_list code to handle possible buffer overflows
  limiting to 3 mode changes isn't sufficient *sigh*
  I think I got this right, unable to test without another server to link to
  and I'm too tired. ;)
  N.B. this code is very similar to send_mode_list... perhaps can
  combine the two functions. ...



*** 20001204_4 by db
- fixed vchan support, added new back pointer to channel struct
  only set non NULL on sub vchans. This makes it easy ...
- Bugs, what happens when a vchan is peristently kept? There is no longer
  an unique ID to use,since it has no users.



*** 20001204_3 by db
- fixed stupid in channel.c where a non op could generate a mode -o
  message on channel, but it didnt' do anything. Mis-placed if...



*** 20001204_2 by db
- added half ops.. BitchX freaks with it, but epic is fine.
  figures. anyway, we can #ifdef this out in production if we want.



*** 20001204_1 by db
- fixed m_kline.c code
- removed all traces of restricted I line code, thats better handled
  using half ops anyway.
- removed horrible '|' oper only messages in mtrie_conf.c
- fixed /stats K in m_stats.c for opers
- redid send_mode_list in channel.c to account for possible buffer overflow
  even with 3 bans per channel..



*** 20001203_13 by db
- fixed bug in m_names.c removed redundant/duplicate code in m_names.c
  which was already in channel.c



*** 20001203_12 by db
- removed DEBUG code from dlink



*** 20001203_11 by db
- removed REJECT_HOLD that should be replaced with IP throttling
- moved safe_write into fileio.c for now, changed to use fbopen() etc.
  let caller close the FBFILE 
- replaced vchan double link list in channel struct with dlink_list
- Still pending bugs in m_names.c, its displaying channels twice



*** 20001203_10 by db
- modified code to use dlink_node/dlink_list for oper_list serv_list
  and lclient_list (local clients) this gets rid of my evil double link
  list code mess, cleans up the code a lot more still..
  I think we really need to have another global (sigh) for the current
  uplink Client pointer for leafs...



*** 20001203_9 by adrian


Add a note about the new Slink replacement and how it needs to be sped up.



*** 20001203_8 by adrian


* ziplinks is gone for the time being
* david-t tidied up calling fd_note() in the right places



*** 20001203_7 by adrian


Add my stuff



*** 20001203_6 by db
- removed zlib



*** 20001203_5 by db
- simplified dlinkMoveList code 



*** 20001203_4 by db
- cleaned up m_nick.c again. HEY! the docs in the comments are wrong.
  surprise surprise.



*** 20001203_3 by db
- oopsie in m_nick.c wrong order of things... gah this code is 
  still a mess ;-(



*** 20001203_2 by db
- cleaned up m_nick.c some more... removed obsolete checks
  moved some tests where they make more sense for the new world order



*** 20001203_1 by db
- tidied up m_nick.c more in modules
  removed a nick <-> server test, replaced it with a simpler strchr(nick,'.')
  test. nicks can NEVER have a dot in them, and servers must ALWAYS
  have a dot in their name.
- cleaned up all functions in m_nick.c checking for specific paramater
  counts as the protocol specifies..



*** 20001202_13 by db
- fixed dlinkMoveList, there are three cases to contend with
  1) empty from list 2) empty to list 3) move the spaghetti pointers around



*** 20001202_12 by db
- fixed DEBUG_BLOCK_ALLOCATOR for free_dlink_node case so it will
  no longer core in sprintf.. all the free calls are "wrapped" 
  in ircd_def.h .. to include a file name and line number, without
  free_dlink_node being wrapped, it tried to print a non-existent filename
  oops

- I removed the "wrapped" free_link in ircd_def.h as well no longer used.
  which reminds me...

- LIMIT_UH code in the new world order is currently =broken= until
  it understands how to properly use dlink_node etc. Someone else
  bored and care to fix?

- Added reference counting to dlink_node =for now= *ICK* barf its an
  #ifdef .. I don't want it going out into production like that either adrian.
  I'll remove before the beta cut.



*** 20001202_11 by toot
small bugfix in m_who


*** 20001202_10 by toot
made vchan_map in to a dlink_list,
not tested loads, but it seems to work


*** 20001202_9 by db
- made list_length a generic function moved into tools.c
  renamed as dlink_list_length()



*** 20001202_8 by db
- add code to move a list from one to the other, this makes
  de-opping an entire channel a simple job of moving lists over from
  the chanop list to the peon list.



*** 20001202_7 by db
- real fix for channel.c change_channel_membrship
- fixed missing prototypes in tools.h that would have found previous bug



*** 20001202_6 by toot
typo in m_admin.. blah :)


*** 20001202_5 by toot
. let unregistered clients use /admin, but non hunting
. non-opers can do /time locally.


*** 20001202_4 by toot
fixed some compile errors/typos


*** 20001202_3 by db
- recoded send_members in channel.c so it actually works
  its still a dogs breakfast... but =better=



*** 20001202_2 by db
- connect bursts are still broken, but it works enough to 
  be usable. More debugging to do.
- cleaned up m_nick.c a tiny bit more. what a steeeninkng mess



*** 20001202_1 by db
- change_channel_membership was screwing up, since dlinkDelete does
  not zero the dlink_list->head pointer in all cases. *sigh* dunno
  what I did wrong. anyway, this hack fixes it for now.



*** 20001201_8 by db
- fixed m_who.c
- optimized m_sjoin.c a bit



*** 20001201_7 by db
- fix to whois... this function needs review... it "feels" wrong... sigh



*** 20001201_6 by db
- fixed m_names.c missing reply_to_send = 1



*** 20001201_5 by db
- tidy up LITTLE_I_LINE code remove #ifdef's



*** 20001201_4 by db
- massive commit, this removes ALL SLink's ick
  NOTE that not everything is working yet, notably server link..
  but this doesn't core right away. ;) and appears to run.



*** 20001201_3 by davidt
fixed gettext support a bit, and added some docs

*** 20001201_2 by adrian


aiee! clear the socket timeout *before* calling the timeout handler.
If we clear it after, we miss any timeouts set by the timeout handler.
(think multiple-ping checks ..)


*** 20001201_1 by adrian


add a flush list, which looks precisely like a socket timeout as it is
right now, but its designed to be used if we want to flush data out
at a certain time rather than immedidately.

Think "flood protection".

Note that this is implemented inside the comm_checktimeouts() loop.
This is done because we want to eventually only have exactly *one*
walk of the entire fd list/clients once a second, rather than multiple.



*** 20001130_22 by db
- majorly reworked m_sjoin.c remove_our_ops and channel.c send_mode_list
  because of the original RFC that started this stupidity off, trying to
  do four modes at a time is risky due to possible buffer overflow ;-(
  Taking the time to strlen() before adding to output buffer seems
  CPU intensive to me. soooo back to 3 mode changes per. This should
  speed up sjoin's a lot now.



*** 20001130_21 by db
- rewrote send_mode_list in channel.c The original was pathetic
  strcat this strcpy that. UGH. This should run much faster.



*** 20001130_20 by db
- fixed broken messages stuff for now I'll double check with David tomorrow
- redid how m_sjoin.c did a remove ops



*** 20001130_19 by davidt
m_error.so wasn't being built.

*** 20001130_18 by db
- removed CUSTOM_ERR define no longer needed
- removed offsetof no longer needed



*** 20001130_17 by davidt
Removed CUSTOM_ERR, and changed it to use gettext(), which allows the
message files to be changed at run time, currently using
/quote set MSGLOCALE ... ('custom' for the custom messages, or anything else
to use the standard ircd messages).
Also, added general_message_locale to the new config file.
If gettext() isn't available, it should just use the standard ircd messages.


*** 20001130_16 by db
- fixed core bug in m_names.c
  


*** 20001130_15 by adrian


move read_packet() and parse_client_queued() into packet.c.
s_bsd.c is meant to be a place where BSD socket type stuff
happens, not parsing client messages.

This is the precursor tidyup which will make implementing the recvq
flooding code talk..



*** 20001130_14 by db
- removed the evil local struct Client hack and added a new LocalUser
  "localClient" part. If non NULL, this client struct is a local client..
  I suppose we can now get rid of local_flag?



*** 20001130_13 by adrian


* kill client[] buffer in the Client struct. We don't need this at all
  with the advent of the linebuf
* Tidy up a couple of assert()s to be more tasteful to me
* note that the count; entry in the Client struct is now only used to
  denote local/remote clients with some evil splitting of the client struct
  and memory allocation. This is evil and should be killed at someone's
  earliest convienence and replaced with a LocalClient struct which attaches
  to the end of a struct Client ..




*** 20001130_12 by adrian


* added an Id tag
* we needed to keep those bzero()'s. Hrm, I wonder why ...
  What happened was that we'd have get a line in, and then immediately flush
  some previously printed garbage. Weird.


*** 20001130_11 by db
- similar bug to parse.c in modules.c when increasing moduletable



*** 20001130_10 by db
- added two new parms to parser hide_server hide_chanops yes or no
- added possible fix (untested by adrian?) to parse.



*** 20001130_9 by adrian


We don't need to bzero, now that the memory routines return the memory
zero'ed for us ..



*** 20001130_8 by db
- removed memset() 0 after MyMalloc its done already 



*** 20001130_7 by db
- no need to memset to zero in channel.c now either



*** 20001130_6 by db
- MessageTree stuff should be in parse.h not msg.h
- Seeing as MyMalloc now zeros memory, no need to do it in blalloc



*** 20001130_5 by adrian


bzero() the memory we get from malloc() before returning. This is a good
thing(tm), and it means we can possibly start removing bzero/memset's
from around the code.



*** 20001130_4 by db
- fixed kick so nonops see user kicking themselves in chanop hide mode
- don't show uplink on links and hopcount if in server hide mode



*** 20001130_3 by db
- committed the chanop hiding code. wheeee
  still needs testing



*** 20001130_2 by db
- server names should not be given in /squit messages if
  server hide is turned on



*** 20001130_1 by db
- squished bug in m_names.c which caused the module to suddenly
  throw up when names without a paramter was given. I forgot
  the case where a client had no channels it was on, trying to 
  indirect through a NULL struct Link is bad for the modules health.



*** 20001129_10 by db
- fixed m_squit.c
- account for LazyLink's in channel.c destroy_channel()
  can be used for both persistent channels and lazy links now
  removing more BLOAT
- -O2 in Makefile.in for modules was doing weirdnesses, hard coded to -g for now



*** 20001129_9 by db
- fixed persistent channels
- fixed IsSetCallerId typo



*** 20001129_8 by db
- pile of cleanups mostly in comments
- added persistent channels tentatively for now, finesse it later
- redid s_user.c code to clean that up



*** 20001129_7 by davidt
Directory /cvsroot/ircd-hybrid-7/messages added to the repository


*** 20001129_6 by db
- renamed misnamed log_user_connect -> log_user_exit
- move X line check into separate function (LIKE IT SHOULD HAVE BEEN
  ALL ALONG)
 



*** 20001129_5 by db
- reworked register_user
  moved all check for conf/kline notification etc. back into s_conf.c
  where I think maybe it belongs, in any case, this cleans up register_user
  no more **char preason. *ugh*
- removed the kludge '|' handling in reasons. *ugh*

  Who knows what evil lies in ircd code...



*** 20001129_4 by db
- redid luser code, removed cache, if this is still needed after all the
  bug fixes done (!) then add an event to recalculate luser counts.

- added user_welcome() function to s_user.c to start factoring this up
  I hate monolithic functions...

  What evil functions lurks in the heart of ircd?, the shad0w knows.




*** 20001129_3 by db
- cleaned up user and oper file logging. use fbopen etc.
  use eventAdd to close user log for resync



*** 20001129_2 by db
- removed more #define's
- cleaned up client.c/client.h some more



*** 20001129_1 by db
- I removed isbot tests. those are quite obsolete and were BLOAT
- I added skeleton for server side ignore new user mode +u
- This adds a new command module "m_accept"
  This code needs to be finished...
- removed rehash gline rehash tkline BLOAT
- tidied up linebuf.c to use \r and \n like K&R intended



*** 20001128_11 by adrian


Revoke FDLIST_BUSYCLIENT for the time being - we need to sort out
how we place things in the fd lists, and we need to keep the flow
of FD events at a steady rate.

The trouble right now is that if we don't have any idle fd's being
triggered, we end up waiting an entire second for their IO to
complete. This is too long. :-)



*** 20001128_10 by db
- removed unused FLUD code



*** 20001128_9 by db
- ripped out FLUD, right idea, wrong approach.



*** 20001128_8 by db
To quote RFC1459.txt

The NOTICE message is used similarly to PRIVMSG.  The difference
   between NOTICE and PRIVMSG is that automatic replies must never be
   sent in response to a NOTICE message.  This rule applies to servers
   too - they must not send any error reply back to the client on
   receipt of a notice.  The object of this rule is to avoid loops
   between a client automatically sending something in response to
   something it received.  This is typically used by automatons (clients
   with either an AI or other interactive program controlling their
   actions) which are always seen to be replying lest they end up in a
   loop with another automaton.

NOTICE now no longer replies with "NO SUCH NICK" if a nick recipient
does not exist etc.



*** 20001128_7 by db
- fixed m_message to work properly. i.e. oper $# messages work
  NO_SUCH_NICK now work properly



*** 20001128_6 by davidt
Fixed broken build

*** 20001128_5 by db
- removed another #ifdef 



*** 20001128_4 by db
- oopsies in modules.c should be max_mods not num_mods



*** 20001128_3 by db
- removed more bloat bloat bloat



*** 20001128_2 by db
- synced up doc changes



*** 20001128_1 by db
- synced in CIDR.txt doc from hybrid-6 tree
  gah! I am looking forward to the death of the h6 tree. it sucks.



*** 20001127_11 by db
- fixed reference to version in module, its a **char pointer. 



*** 20001127_10 by db
- fixed a few typos



*** 20001127_9 by bill

 - added _moddeinit()


*** 20001127_8 by db
- fixed modload/modunload yes. they work now



*** 20001127_7 by db
- added deinit



*** 20001127_6 by db
- modunload now works. But all modules need to be updated to add a deinit
  function *sigh* I did m_admin.c, 59 more to go



*** 20001127_5 by db
- fixed parse.c and modules.c



*** 20001127_4 by adrian


We should only allow a buffer to be obtained via linebuf_get() if it
is terminated!



*** 20001127_3 by adrian


Add initial documenation of the new linebuf code
(god I love documenting ..)



*** 20001127_2 by db
- interim check in, I hate checking in partially debugged code
  but I have to do some real work for a bit,
  /modunload cores ..



*** 20001127_1 by db
- fixed modules code to use version string as well
- fixed parse to use prefix tree code
- modload modunload hooks in place, need admin flags 
- fixed m_help to use original msgtab 



*** 20001126_10 by db
- got tired of a compile warning



*** 20001126_9 by db
- re-enabled send_operwall



*** 20001126_8 by db
- .depend included references to in6.h which ltnx didn't have oops.
- committed bysin's whois fix



*** 20001126_7 by db
- Seeing as there is next to nothing left of irc2.8 I'm removing
  it from the patchlevel.



*** 20001126_6 by adrian


Hrm, return the number of lines parsed by linebuf_parse() - this'll be
used later on by some anti-flood code at a later date.



*** 20001126_5 by adrian


We don't need these. YAY.



*** 20001126_4 by adrian


Adrian's totally massive evil dbuf die and linebuf code.

* dbuf.c and dbuf.h have gone. Byebye.
* some of the stuff in s_debug.c which reports dbuf stats has been
  #if 0'ed for the time being
* linebuf flushing (ie write()ing to a socket) is now done through
  linebuf_flush() which does the state keeping, saving a whole lot of
  dbuf map/delete and tracking that existed before
* dopacket() was killed, since we now handle line-by-line parsing of both
  server *and* client recvq buffers. dopacket() did some CRLF-type splitting
  magic because a single buffer when doing ZIPLINKS could possibly be
  more than on ircd line.
* deliver_it() was also killed, since we don't need that extra complexity.
* A lot of linebuf fixes are brought in because well, we needed them!


How the linebuf stuff is used (in a nutshell)

* linebuf_put() is called to put a complete line into a buffer. It has
  to be a line.
* linebuf_parse() is called to put one or more lines into a buffer.
  Incomplete lines and multiple lines are handled.
* When a line is terminated, it is appended with a CR/LF/NUL .

  NOTE that the NUL isn't counted in the length!


Ok - this code is very very alpha. It works, and I can link to another
hybrid server. There are a lot of extras I have to add to this code
before it can be used in a public network, like:

* fixing flood protection to take into account alloclen rather than len.
  This is more relevant to memory usage
* fix the flood protection to only appear in one place (ie after
  linebuf_parse() ) rather than the 10935083405 places it exists now
* I should add multiple-size support in the linebuf code, because we might
  end up wanting to support > 512 line buffers for server connections
* .. and yes, we should really test this to break it, to make sure I haven't
  forgotten anything.



*** 20001126_3 by bill

va'ified send_operwall
added zlib/ and iauth/ to SUBDIRS in Makefile


*** 20001126_2 by db
- fixed m_kline.c



*** 20001126_1 by db
- more cleanups



*** 20001125_5 by db
- tempoary check in (still works) of another massive cleanup...
  more to come



*** 20001125_4 by db
- more bloat removed.



*** 20001125_3 by toot
don't need to check if they're an oper in mo_testline


*** 20001125_2 by ryan

added RPATH for ircd.rsa (for oper keyfiles)


*** 20001125_1 by toot
. moved mo_testline into a module
. added idletime setting for use in ircd.conf


*** 20001124_5 by bill

 - changed DPATH and the like from "/usr/ejb/ircd/" to "/usr/local/ircd/"
   maybe ejb could just ln -sf /usr/ejb /usr/local?


*** 20001124_4 by db
- removed more unused junk



*** 20001124_3 by db
- clean up to this module 



*** 20001124_2 by db
- more cleanups, removed m_htm.c



*** 20001124_1 by db
- more cleanups



*** 20001123_6 by db
- added version strings



*** 20001123_5 by db
- added version tags



*** 20001123_4 by db
- more versions



*** 20001123_3 by db
- added version



*** 20001123_2 by db
- more fixes



*** 20001123_1 by db
- fixed m_userhost



*** 20001121_3 by adrian


Add in the beginnings of my new and hopefully improved dbuf replacement.

The general idea here is that we *should* be pre-parsing buffers into lines
so we can later throw references around.

src/dbuf.c throws data into the dbuf and parses it when its coming out.
This code parses data into lines when it comes in, so its already
in a per-line format (minus the trailing CRLFs) when we come to parsing
it.

Its building, but I haven't tested it yet. THAT is next.




*** 20001121_2 by adrian

Actually create a tools module with stuff that is abused reguarly,
and rip some of squid's dlink-list management stuff.

I'll commit some code which uses them soon, so people have something
to work with.

This should remove a *lot* of ugliness/duplication in dlink list
management. :)



*** 20001121_1 by db
- general cleanups continue, just a few this time
- ltrace removed for now, it can go back in later



*** 20001119_2 by davidt
modularised m_motd, so /MOTD works once again.
motd.c still contains various file reading/sending commands, which are
used elsewhere, although motd.c probably isn't the best name any more.


*** 20001119_1 by davidt
fixes for poll.  It seems to work, although there's probably a bug lurking
in there somewhere...


*** 20001118_3 by toot
removed all those OLD_* defines in set_mode()


*** 20001118_2 by toot
End of /NAMES list was missing in one place.
fixed compile warning in ltrace


*** 20001118_1 by davidt
fix for gcc warnings, and do a fd_note on nickchanges.


*** 20001117_2 by davidt
- added missing _modinit function to m_gline.c
- removed #ifdef LTRACE from m_ltrace.c 
- fixed m_challenge.c to make a non-broken module if we aren't using
  OPENSSL


*** 20001117_1 by toot
. made a separate ircd.conf setting to block nickchanges when banned,
  and block them in +m chans too, unless opped
. fixed a typo i made in can_send() :P


*** 20001116_7 by toot
(quiet_on_ban stuff)
  +o/+v should be able to speak even if banned
  only check local connections, to save CPU, and avoid "desync" messages on mixed nets
  take account of +e's

it's safe to send more than 3 +b/e/d/I modes on a netjoin, so use upto MAXMODEPARAMS


*** 20001116_6 by toot
removed mo_knock, m_knock is fine for opers.


*** 20001116_5 by toot
use the topic setters nickname in the !list, if available


*** 20001116_4 by davidt
- Fixed a small bug in m_message.c, where @@<chan>, @+<chan>, +@<chan>,
  and ++<chan> would all be treated as +<chan>.  Now @@ and ++ are treated
  as invalid, @+ and @+ are treated as +
- Made sendto_channel_type's check for MODE_VOICE before MODE_CHANOP.
- m_notice.c and m_privmsg.c are obsolete (merged into m_message.c),
  and weren't being built anyway.


*** 20001116_3 by davidt
- Figured out how to create a .so without the .tmp file..

this tree seems to compile/run correctly for me on Linux, hopefully
I didn't break anything elsewhere..


*** 20001116_2 by davidt
- modules/Makefile.in modified to work with gmake (like src/Makefile.in)
- src/Makefile.in @DL_OPEN@ removed, since configure doesn't use this
  any more.
- modules/Makefile in removed, since it should be generated by configure
  like src/Makefile


*** 20001116_1 by davidt
Removed uneeded malloc in modules.c (and the corresponding bogus free,
which caused ircd to core when loading modules)


*** 20001115_5 by lusky
backed down to previous configure script


*** 20001115_4 by adrian


When a FD goes inactive, make sure its moved onto the NONE fdlist.



*** 20001115_3 by db
- removed /rehash dump for one reason... and one reason only BLOAT



*** 20001115_2 by lusky
added missing commit comments


*** 20001115_1 by db
- oops. just noticed I forgot to cvs add these *sigh* sorry



*** 20001114_5 by spookey
- configure & autoconf/configure.in & src/Makefile.in updated for -ldl
  linking with IRC (added DL_DEFINE stuff to IRCDLIBS and defined it if 
  it's a linux machine)
- src/s_bsd_poll.c added the glibc compatibility fixes



*** 20001114_4 by db
- small change to parse.c, this makes more sense to me
- added configure change suggested by David-T, this still needs to
  be made into the configure script by someone who knows how to do
  such things...



*** 20001114_3 by db
- seriously, why was this struct sitting around not doing anything useful?
  was it to entertain me?



*** 20001114_2 by db
- m_whowas.c was missing from modules, 'cause it was hiding like a bad
  little boy inside src/whowas.c... unfortuantely, m_whowas.c has a 
  dependancy on whowas.c ... carnal knowledge of the hash table etc. but
  no worse then m_whois.c on client structs etc. blah. Anyway, move
  stuff from whowas.c into m_whowas.c in modules..

- Added NOTICE fix up mention in TODO list



*** 20001114_1 by db
- A long time ago, in an ircd far far away, there was one a function called
  m_message.c which did both m_privmsg and m_notice. When the evil bleep
  bleep from another ircd universe invaded us, we split that into
  m_privmsg.c and m_notice.c ... I really don't see the point, they
  share too much functionality, they both do the same thing blah blah blah.
  Its really miserable fixing something in m_privmsg.c only to duplicate
  the work in m_notice.c as well.




*** 20001113_5 by db
- fixed mistake found by David-T an = should have been an |=



*** 20001113_4 by db
- buffer size was incorrect and incorrectly commented



*** 20001113_3 by db
- fix to s_conf.c *sigh*



*** 20001113_2 by db
- use more common functions whenever possible. grrr 



*** 20001113_1 by db
- cleaned up m_whois.c a bit more
- moved find_user_link from list.c into channel.c thats the only place it
  was being used anyway.
- removed no longer used #ifdef from config.h
- redid the semantics for channel_chanop_or_voice to work on channel mode
  flags rather than Link



*** 20001111_6 by db
- more cleanup on m_kline.c
  with iauth, kline file locking etc. will be handled by iauthd anyway..
  We'll need a local link list of klines to place as they are handed to 
iauthd eventually...

- fixed small bug in s_conf.c removed another #ifdef



*** 20001111_5 by db
- more clean ups on m_kline.c, I'll make this sane yet!



*** 20001111_4 by ejb
- fix up Makefiles a bit so they actually work
- finally remove src/m_*.c
- remove /list sendq crud



*** 20001111_3 by db
- simplified mo_dline a bit



*** 20001111_2 by db
- interim checkin of m_kline.c, first pass of clean up



*** 20001111_1 by db
- initial rewrite of m_list.c moved some code into channel.c for the moment.
  is- can do a better job on this later (HI!)

- m_admin now only available locally if unregistered (rodder's fix in 6)
  this allows one to figure out just who the loser is thats connecting
  to your server without having to register... yet gets rid of the 
  stupid nick collide "feature"

- modules/Makefile should really be generated from configure no? for now
  I've modified modules/Makefile to generate m_list.so again since I've
  moved some of the depedancies out of m_list.c
  is- can figure out what to do with this later. (HI again!) at least
  the code is sane now. (I've left code #if 0 out in m_list.c so it
  can go back in later)



*** 20001110_3 by db
- added missing m_list.c in Makefile.in



*** 20001110_2 by db
- channel specific stuff should stay in channel.c ya ya ya 
  anyway, m_join.so was having a nit pick fit over names_on_this_channel()
  which of course, was way over in m_names.so.... so I have renamed
  the function to channel_member_names() and placed it into channel.c
  Ignore the mods to src/m_join.c duh. everything m_* in src goes away...

  Eventually in an universe far far away, channel becomes channel.so
  which means, it will have to have a list of dependancies on it to unload
  and reload or something, or maybe just unload all the m_ functions and
  reload autoload? Sometime in an alternate universe...




*** 20001110_1 by db
- nasty DoS 
  if user enters long prefix, it puts the parser into an infinite loop

:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bb
will hang the ircd



*** 20001109_7 by ejb

some fixes in makefile


*** 20001109_6 by ejb
ok basic modules support is almost complete now.
there's a strange bug where some commands make it
exit(1), when i've fixed that all we need is
m_modload, and module UNloading support ..

then maybe modularise more stuff, that's all for
the future though.



*** 20001109_5 by ejb
modules appear to be mostly working now, apart from a small problem with
the mtree that means it won't recognise any commands.
m_error and m_list are now built as part of the core for now..
still no make install for modules/




*** 20001109_4 by db
- only ctcp flud check if local client *oops* This was a side effect
  of combinging ms_privmsg/ms_notice back into one...



*** 20001109_3 by ejb
finished converting modules/*, just some work to do in src/ to make
it compile and stuff now.



*** 20001109_2 by db
- remember, mo_close is only called if an oper, no need to double check



*** 20001109_1 by ejb
convert a few more m_functions, only 8 left to do now.  most of them
will compile, although a couple will not and src/ircd will still not
link.  as i said, will try to fix that tonight.



*** 20001108_8 by ejb
Initial commit of loadable modules support.  right now we can
load modules, but not unload them.  support for adding commands
via modules is there, and about 50% of the m_*.c has been ported.
currently ircd will neither compile nor link properly, but i 
wanted to commit this as soon as possible.. from now on if you
modify m_*.c please edit the version in modules/ rather than
in src/, since src/m_*.c will disappear soon.

i'll try to make another commit tomorrow that fixes compilation,
and allows ircd to be used ..

also we need a modules.txt that explains how to write modules.

so, if you need a working ircd now, sorry, you'll have to wait
until tomorrow :/

(btw if anyone feels like porting the rest of modules/m_*.c (i've done
up to m_operwall.c so far), just look at one of the existing ones
as an example, all you need is the struct Message and _modinit()
function).  as for global symbols defined in modules (this is why
ircd won't link right now), i have a solution to this which i can
hopefully also commit tomorrow.



*** 20001108_7 by ejb
Directory /cvsroot/ircd-hybrid-7/modules added to the repository


*** 20001108_6 by adrian


* Adding socket timeout information
* remove FD list code, since its in a seperate file
* cosmetic changes



*** 20001108_5 by adrian


Break out the documentation in network.txt into seperate files for
filedescriptor management and file management.



*** 20001108_4 by adrian


Enforce FD limits in file_open()



*** 20001108_3 by adrian


Updates on the network code documentation. Add documentation for the FD lists
and FD management code.



*** 20001108_2 by adrian


Initial non-optimised version of my fd list code.

The idea is that for the most part, we can detect busy and idle clients
at IO register time (and, at the outside, we can re-decide when we get
a ping back from a client..)

The FD list is passed through comm_setselect() as its second argument.
There will be some weirdnesses where FDs shift lists frequently, but I
will play with this code soon.

Read include/fdlist.h for the list of FD lists.



*** 20001108_1 by adrian


Added initial documentation for the event code.



*** 20001107_9 by ryan

added myself. oops :)


*** 20001107_8 by db
- in the new world order, if you reach a mo_ function you are an oper
  No need to double check.



*** 20001107_7 by adrian


A network code overview. Very brief (only comm_setselect() is covered
right now), but I'll be adding to it real soon.



*** 20001107_6 by ejb
added support for /undline and /ungline (ported from toot's
patch to -6)



*** 20001107_5 by ejb
we now propagate /away if the state is changing - ie if they were
away before and are marking unaway, or vise verse.



*** 20001107_4 by db
- this should add back the lameo weird oper privmsg masks
  but it doesn't work. No matter, debug tomorrow ;) it still compiles

  I'm going to "steal" the ircu new mask format for opers, its saner...
  I believe everything is prefixed with $ for special oper thingies
  Isomer, care to help out on this one?



*** 20001107_3 by db
- reworked ison slightly. *sigh* dunno what kind of drugs I was on



*** 20001107_2 by db
- bah moved changes over to m_notice.c



*** 20001107_1 by db
- added back anti drone flood code. *sigh* Though I suspect this all
  has to be modified in the grand scheme of things eventually...

  Still have to re-add oper prefix privmsg support.



*** 20001106_18 by db
- slight tweak to m_privmsg code to allow sending of errors to client
  


*** 20001106_17 by db
- rewrote m_privmsg.c more or less completely.
  Still TODO re-add the additional privileged things opers get
  copy this code in m_notice.c
  TEST TEST TEST I think it works...



*** 20001106_16 by db
- split m_sjoin.c up a bit more, added vchan support for remote clients
  I want to revisit this code. The problem is, remote servers can have
  more allocated channels per user, and we have a fixed sized vchan map ;-(
  So, whats fine locally may be too small for a remote user. Perhaps the
  vchan map should be a link list? or we suffer with scanning all vchans
  for remote clients?

- moved vchan map into all clients even remote, section. blech. read
  comments above.

- cleaned up m_cjoin a bit



*** 20001106_15 by adrian


We don't need to flush a socket buffer when we've already done it.
REJECT_HOLD is fun code .. and yes, it was my screwup.



*** 20001106_14 by adrian


use autoconf'ed CFLAGS, rather than enforcing inheriting it from the
top level Makefile. This allows 'make' in src/ work *properly*.



*** 20001106_13 by adrian


Make sure we remove the query from the pending DNS requets when we actually
get the reply.

I forgot this line when I ripped out some of the remaining DNS cache code
:-)



*** 20001106_12 by adrian


Only add a client to the AuthClientList if we're doing iauth.



*** 20001106_11 by db
- don't list secret channels in vchan ! list



*** 20001106_10 by db
- cryptic code must die if(!--maxmatches) ...
- minor cleanups



*** 20001106_9 by adrian


I hate doing it, but here it is. One blind commit to rip out ziplinks
from hybrid-7, as they will be re-implemented later on as an external
process rather than be in the code.

the actual zip files haven't been removed, since I'm probably going to
reuse them very soon now.

This hasn't been tested. It compiles. I will do more testing this evening,
and probably do some much needed tidyups to the client/server send and
receive code.



*** 20001106_8 by adrian


fd limit checking is done in comm_open() now, so remove a superflous check.
This has the added advantage of killing an incorrect close() which should
have been an fd_close(), but it doesn't matter much now ..



*** 20001106_7 by db
- reworked even more code
  I removed remote m_away entirely for now
- fixed serious botch in channel.s with channel_mode



*** 20001106_6 by adrian


Thanks to is- for pointing out the *correct* fix: default: <build target>
Reverted the previous patch, and set default:    all


*** 20001106_5 by adrian


Rearrange the Makefile targets so 'make' in src does the right thing(tm).



*** 20001106_4 by adrian


Finally kill the DNS cache code altogether from the API. gethost_byname()
and gethost_byaddr() now are void functions, rather than struct DNSReply *
functions. If we want to implement a DNS cache, we can do it later with
some callback trickery without having to always check the result and do
trickery in all the client code. (Which makes things hard to follow :-)

The users of gethost_ were converted to assume the callback will be made
at some future time. Note that we can't simply call the callback inside
gethost_ because it'd break things. (What you'd do is have a function
called res_callbackhits() before comm_select() is invoked to do the DNS
callbacks for any cache hits..)



*** 20001106_3 by db
- even more cleanups
  removed a pile of unused #ifdef's lets move these into runtime config
  or EVEN better loadable modules. (hint is- hint hint hint)

  And oh yes, show oper passwords on failure wasn't is-'s fault. happy now?

  Ok, sjoin from remote server for a vchan is going to be interesting.
currently our vchan map is only kept for local clients. duh.
find_vchan() won't work on a remote client. duh. (vhan_map)
The question now is, do we extend vchan_map to remote clients as well
and fill in the map on sjoins? or figure out its a remote client
and walk the vchan link list instead for remote clients?
*sigh* The map is definitely faster for local clients, as it is filled
in in m_join and m_part etc....
Actually, the idea of caching them as found for remote clients 
sounds like the best compromise...

  


*** 20001106_2 by db
- removed prototype that no longer existed
- fixed comment in hash.c
- reworked yet another inconsistent function



*** 20001106_1 by db
- made some functions consistent in use... i.e. always start with chptr
- removed some dead functions
- removed del_invite add_invite from channel.c moved to m_invite.c

  I think I got this right. There were functions that had chptr
first, then others that had sptr first.. inconsistent... 

  Removed a few no longer used or defined functions. duh
  


*** 20001105_12 by ryan

Added Id tags to rsa_respond (oops)


*** 20001105_11 by ryan


This is the example client implimentation of RSA authentication for opers


*** 20001105_10 by ryan
Directory /cvsroot/ircd-hybrid-7/tools/rsa_respond added to the repository


*** 20001105_9 by toot
David-T's patch that add vchan support to KNOCK, and fixes the flood control


*** 20001105_8 by db
- clean ups to m_join.c
- resolved conflict in s_conf.h



*** 20001105_7 by adrian


Tidyups of src/s_auth.c .

Submitted by: David Taylor <davidt@yadt.co.uk>


*** 20001105_6 by adrian


Kill #ifdef IDLE_CHECK, since someone did it in mtrie.conf ..



*** 20001105_5 by db
- redid m_join.c its still evil, but not quite as bad



*** 20001105_4 by db
- removed a bunch of stuff. JUPE_CHANNEL is gone
  Its really not needed with vchans
- removed more SPLIT_MODE cruft, also not needed



*** 20001105_3 by db
- fixed stupid in m_oper.c, it wouldn't have honoured O from other servers..

- removed show oper password on fail... The reason is nasty.. When
  Europeans got hackered recently, irc.hemmet etc.... The kiddies were 
  opered up with hacked O lines.. A few opers accidentally used the 
  O line passwords for other servers on the hacked server... showing the
  kiddies their O line passwords for yet more servers... This is a 
  bad idea completely. *sigh* Yes, maybe it should be up to the admins, 
  but it is just a bad idea I think. Sorry is- 



*** 20001105_2 by db
- redid m_oper.c to clean that up a bit 
- changed the header in m_challenge.c from m_version.c to m_challenge.c



*** 20001105_1 by db
- slight cleanups to m_part.c
- added vchan support to m_whois.c m_who.c
- added fughly hack to parse... more than one unregistered message
  results it no more unregistered messages...



*** 20001104_11 by db
- fixed botch I introduced with vchans, when I rewrote m_names.c



*** 20001104_10 by db
- fixed m_who.c to be completely vchan aware



*** 20001104_9 by ryan

RSA implimented.  /quote CHALLENGE (with --enable-openssl)
now we just need some clever way to make /oper accept the response :)


*** 20001104_8 by db
- added vchans.txt doc



*** 20001104_7 by db
- rewrite of m_oper.c to clean it up a tad



*** 20001104_6 by db
- cleaned up m_nick.c a bit. ms_nick still needs a lot more work
  but at least its not doggie doo-doo any more. ms_nick is still too long.
  The fd_note function looks expensive to use in production... adrian?



*** 20001104_5 by ryan


Added initial RSA support (challenge/response stuff)
nothing is actually built without specifying --enable-openssl (which results
in rsa.c compiling and the ircd being linked with -lcrypto)


*** 20001104_4 by ryan

Modified configure.in and regenerated ./configure, Modified Makefile.in
in preperation for optional openssl support (for RSA authentication of opers)


*** 20001104_3 by adrian


* add fd_note() which changes the FD description
* add fd_dump() which dumps the current opened FD list to the given
  client
* add /stats F / /stats f support from opers to dump the current
  open sockets. This could do with more info being dumped, but its fun
  for debugging right now.
* add Server: and Nick: in front of the server and nick connections
  so /stats F looks useful
* .. and finally, use fd_note() in src/m_nick.c to set the nickname
  description whenever the client sets its nick.

IsLocal() isn't functional. Grr.



*** 20001104_2 by adrian


* set the socket to non-blocking in comm_open(), and fail the socket
  creation if this fails. All network sockets should be non-blocking
  in this ircd!

* add comm_accept() - a mirror of accept() but enforcing non-blockingness
  and FD limits also

* modify listener.c to use comm_accept() instead of accept() and fd_open() .



*** 20001104_1 by db
- some cleanups
- Still need to add back in lazy link support
- Still need to add back in vchan support



*** 20001103_8 by adrian


with REJECT_HOLD, we read() from the fd to flush the buffer, instead of
ignoring it. This is event-IO friendly, and it will stop triggering unwanted
read IO events.



*** 20001103_7 by adrian


Implementing comm_open(). This is designed to be a socket() and
fd_open() wrapper which limits the number of possible open FDs to
MASTER_MAX (for the time being - better suggestions please :)

So now, you should be either using file_open() / fbopen(), or
comm_open(), and *NOT* any other calls if you can avoid it.
I haven't wrapped dup/dup2/pipe, since the ircd currently does not
use them.



*** 20001103_6 by adrian


* move highest_fd into fdlist.h and out of s_bsd.h for the time
  being
* add a number_fd variable giving us the number of file descriptors
  currently open. This will become useful for limiting socket creation
  and so forth when we're trying to avoid over-flowing the number of
  file descriptors open ..



*** 20001103_5 by adrian


Kill fdlist_add and fdlist_delete, since we're not using them anymore.



*** 20001103_4 by adrian


local[] is already defined in s_bsd.c, so there is no reason to have
it defined in the poll and kqueue modules.


*** 20001103_3 by adrian

Call init_netio() earlier than anything which could
call comm_setselect(). This is why the resolver wasn't
working with kqueue, because we didn't have the kqueue fd open
at the time the resolver fd was comm_setselect()ed .



*** 20001103_2 by adrian


Tidy up the logging during a connection attempt - print a connect message
*before* calling serv_connect(), because it can generate an error itself,
sending the error to the client *before* sending the activated line.
(This is a side-effect of callbacks, btw. We could get around it, but this
just seems clearer to me.)



*** 20001103_1 by db
- reworked m_names.c
- added fix by rodder from hybrid-6 for log botch



*** 20001102_12 by adrian


Add in the initial kqueue implementation. Note that DNS breaks under anything
before 4.1-REL because of a bug in kqueue() (if I remember right).

This code is very simple, and has no debugging. I'll be (ab)using it
in about a week after I've tidied up some other bits of code, but I thought
I'd give you guys something to play with. :)



*** 20001102_11 by adrian


tidy up the code in serv_connect(), which basically is some formatting
changes and a comment change to reflect a function name change.



*** 20001102_10 by adrian


when serv_connect_callback() isn't COMM_OK: 

Log to opers the actual error, rather than it going as a wallop or
something. This makes it appear with the connect messages to opers,
which IMHO is where it *should* be going.



*** 20001102_9 by adrian


Fix the timeout code so its added when we do a non-DNS connect(), and
cleared when we call the callback so it doesn't trigger wrongly.



*** 20001102_8 by bill


iauth/ was missed in SUBDIRS


*** 20001102_7 by adrian


.. oops, forgot an #include for close() .



*** 20001102_6 by adrian


* convert send_queued_write() to a global so we can use it in other places ..
* .. like close_connection(), to flush data before the socket closes

This now means peopl get their quit messages back before the FD closes! :P



*** 20001102_5 by adrian


fd_close() is meant to close() the fd, rather than squid's which doesn't
(this is because its got more sane file_open/close and comm_open/close
code ..)

This fixes the fd leak and non-closing fd problems.



*** 20001102_4 by adrian


Initial change over of the server connect() code to use the new world
order(tm).

* Fix a couple of stupidities in my last commit of comm_strerror
* Strip the server connection stuff out of s_bsd.c and move it into
  two functions in s_serv.c - 
  + serv_connect() - initiate a connection to a server (replacing
    connect_server()
  + serv_connect_callback() - completion from comm_connect_tcp() 

Note that there doesn't seem to be checking to see if a /connect server
is actually in the process of being connect'ed. This should happen!

The code works and connects to the server(s) on startup, but /squit and
/connect's fail. I've found that clients that /quit dont have their
sockets closed .. I have to figure that out, which might solve this.




*** 20001102_3 by toot
. fixed a possible over flow when listing available vchans
. have it show the nickname of who's been there longest


*** 20001102_2 by adrian


Add a routine to output string versions of the COMM_ status



*** 20001102_1 by adrian


oops, forgot to return; after the COMM_ERR_BIND, which meant it still
tried to connect..



*** 20001101_6 by adrian


.. and remember that a retried connect() can return EISCONN which
means the socket is already connect()ed, and its not actually an
error.

This makes the auth code work again. Yay. :)




*** 20001101_5 by adrian


Converting the ident auth code over to use comm_connect_tcp().
Note that this code doesn't entirely work yet, but it doesn't NOT work
(go on, parse that)

* rip the bind() / connect() code out of s_auth.c and use
  comm_connect_tcp() instead

* change send_auth_query() into a CNCB - it is called once 
  comm_connect_tcp() completes in order, and handles errors from
  it before attempting to write to the socket.

* fix comm_connect_tcp() to actually work ! :
  + actually *remember* to record the port
  + don't do DNS lookups on IPs when you want an IP, instead attempt to
    convert it to a in_addr, and if it fails try to look it up with
    gethost_byname()

* Remove all the auth descriptor stuff from send_message(), leaving only
  server connect()s



*** 20001101_4 by adrian


Add a 'local' parameter to comm_connect_tcp() to specify what to bind()
to locally. Currently if NULL is passed no bind() is performed, but later
on this will change to bind() to the virtual server IP if one is
configured.



*** 20001101_3 by adrian


Make the auth read is now done through comm_setselect(), rather than
through read_message(). This means that all read_message() does now
is handle completion of auth and server connect()s, which is next to go.



*** 20001101_2 by adrian


tidy up the auth code to use the block allocator rather than mymalloc/myfree



*** 20001101_1 by adrian


more comm_connect() code. This again hasn't been tested.

* finished comm_connect_tryconnect() to do what it should
* deal with the DNS return
* add more COMM_ERRs, so that the code trying to connect can do better
  debugging



*** 20001031_9 by db
- If you are going to change macros to look "prettier" finish the job
  *glares at bleep* We had macros that duplicated functionality
  confusing at the least...



*** 20001031_8 by adrian


Add some more code to implement comm_connect_tcp(). Its not functional
yet, but its getting there.



*** 20001031_7 by db
- preliminary cleanup of m_whois.c
  I messed up previous commit. YES I tested, but missed the duplicate
  in the scroll. *grr* fixed.



*** 20001031_6 by db
- slight cleanup to m_part.c
- major cleanup to m_whois.c



*** 20001031_5 by adrian


Remove the unneeded nextdnscheck variable, as we've turned it into a
periodic event now.



*** 20001031_4 by adrian


A temporary hack to make sure we're reading data once a server
connection has completed. It will go away when I finish this
replacement comm_connect_tcp() code.

Server connections *should* work now. They seem to work for me :)



*** 20001031_3 by adrian


Whatever the crack was that convinced me calling eventAdd()
from somewhere *before* eventInit() was called, never ever
come close to me again.


*** 20001031_2 by adrian


Initial timeout fd stuff. There is no code that uses it yet, but its there
and running for when I (am about to) do.

The idea is that you register a callback to be called after a given time
period has elapsed. This is good for things like checking ping returns,
where you set the timeout period on the fd to be 2*ping, and when you get
a PONG you reset the timeout period. If the socket ever times out, you
get a ping timeout.

Its also going to be used for the up-coming non-blocking connect() code,
where a socket timeout kicks in to prevent a connect() taking too long
to run.

Once check_pings() has been split up, this and the poll/select/etc loop should
be the only two places that walking the entire fd_table[] array is allowed.



*** 20001031_1 by adrian


We should be registering a COMM_SELECT_READ, not WRITE.
The only reason this was working was because the socket was ready
for writing also at the correct time it was ready for reading ..
uhm, sad. :-)



*** 20001030_11 by db
- more mods to clean up m_stats.c
- slight cleanup in m_user.c



*** 20001030_10 by adrian


Eek, don't re-register a read if cptr->fd == -1, ie she's shutting down.



*** 20001030_9 by adrian


* kill the priority code
* kill the burst mode code (there are still bits and pieces of the variables
  somewhere still.. :)
* call read_message() with a delay of 0, and call comm_select() with delay
  rather than 1. This makes the ircd snappier again ..



*** 20001030_8 by adrian


kill npollfds and use highest_fd in its place, which is just as good.



*** 20001030_7 by adrian


Optimise the read code. When a connection graduates from the auth state
and is upgraded to a client, its added via comm_setselect() to start
reading data.

* read_packet() has been turned into a PF, so it can be called when a
  FD is ready for reading.

* read_packet() has been stripped quite a bit - we *assume* that there
  will be data returned from the read. If not, thats a socket error

* error handling has been moved into read_packet() instead of its return
  value

* note that the data is put into the dbuf as fast as possible, rather than
  being evil and waiting. I'll fix the DoSability of this code at a later
  date, and without ignoring reads. :-P



*** 20001030_6 by adrian


Big big write optimisation, taking client and server writes into the
new network loop:

* flush_sendq_except() is gone. This was called when data was
  added to a dbuf and a new one needed allocating, probably to
  increase network throughput and decrease dbuf usage. It should
  not be needed now.

* send_queued() has been turned into send_queued_write() which is
  an IO callback now.

* send_message() will now *always* schedule a COMM_SELECT_WRITE
  regardless of how small the sendq is. This should up the
  network throughput and reduce the CPU a little.

* send_queued_write() should be rescheduling a COMM_SELECT_WRITE 
  if the dbuf chain hasn't been drained fully. I'm still 
  researching this to make sure the variable 'more' is set in
  the right places.

* fd shutdown code in s_bsd.c called send_queued() to flush dbufs
  before killing the FD. This obviously can't be done now.
  As noted in a comment, when close handlers are implemented
  correctly, the dbuf will be flushed (or attempted to) before
  the FD closes totally, so we just ignore it here for now.

* Make the old-style poll code not register and check write
  events for FDs that need data written. So now, the only
  thing that can trigger a client/server FD write in the old-style
  poll code is the completion of a connect(). All server/client
  FD writes are done through comm_select() in the new world order.

send_message() could probably attempt to call send_queued_write()
rather than waiting for the fd to be ready for writing, but this
is an optimisation for another time. (And easy too, since the
original code for send_message() called send_queued() anyway,
so there shouldn't be any problems there .. :)



*** 20001030_5 by db
- added tiny stats parse function (damn you Isomer!)



*** 20001030_4 by db
- more cleanups to m_stats.c code 
  both handlers call do_normal_stats
  oper handler calls do_priv_stats normal handler calls do_non_priv_stats
  This should make it way easier to assign appropriate privs



*** 20001030_3 by db
- moved events reporting from /quote events to /stats E
  I think it belongs there since /stats z is memory report
  I'd eventually like to have oper only /stats such as
  /stats events, /stats memory , /stats memory klines
  This could lend itself well to gersh's new malloc memory reporting code...



*** 20001030_2 by db
- reworked m_stats.c some more. no need for valid_stats flag. ick



*** 20001030_1 by db
- cleaned up m_stats.c just a little
  I like Isomers idea of renaming things a bit more, but this is
  a start...



*** 20001029_5 by db
- finally moved check_client from s_bsd.c, where it really never seemed
  to me to belong, moved into s_conf.c 



*** 20001029_4 by db
- viconf.c modified to match hybrid-6 patch, added vimotd check



*** 20001029_3 by lusky
fix for mIRC NAT+spoofedI DCC send problem (userhost now returns sockhost
for acptr==sptr).


*** 20001029_2 by db
- m_sjoin.c is still a mess, but starting to split it up into
  manageable pieces. 



*** 20001029_1 by adrian


Kill the flush_*() routines in send.c, since they add an extra level
of complexity and hackiness to where the code *should* be tidy (and
well, I'm going to tidy).

The closing-ircd-flush will be fixed once close handlers are implemented.
They will be soon.



*** 20001028_8 by adrian


Attempt to indent send_message() because I am about to start hacking
on this code, and this indenting wasn't helping..



*** 20001028_7 by adrian


Neatening up the formatting a little bit. There's no concept of 'valid
callback' here in this codebase.



*** 20001028_6 by db
- typo in s_serv.c in vchan handling
  oopsies



*** 20001028_5 by db
- most of the work is done in m_sjoin, it =should= send the mode
  join messages etc. to the right vchan names now.



*** 20001028_4 by db
- ok, did preliminary mods on sjoin to support vchans.
  This function is a pile of festering pus..
  Anyway, it should more or less work but its untested. Still to be
  done is the mods to the sendto_channel etc. so they all send the right
  join messages to the vchans as appropriate.



*** 20001028_3 by db
- rewrote burst code, added new function to do the actual burst. 'bout time.
  rewrote the burst code to send vchans as sub chans of top level channels.
  Next need to redo SJOIN to paste 'em back into sub vchans from burst



*** 20001028_2 by db
- adds /quote events which will list the event queue
  I'd rather add a generic "debug" function later on i.e. something like
  "/quote debug events" "/quote debug memory" etc. etc. but this will
  do for now...



*** 20001028_1 by adrian


move check_pings() into an event, and tidy up a random comment.
check_pings() is now called once a second to make sure we catch all
pings that should be pong'ed, since nextping isn't reset anywhere
in the code anymore. This isn't entirely optimal, but it will do
until I've tidied up the rest of the network code. When this is
done, I'll optimise check_pings() so it doesn't have to do so much
work to decide whether a client/server should have responded.



*** 20001027_1 by toot
made vchan notices into numeric replies.  276-278 don't seem to be used for anything in
any ircd i checked, so went for them


*** 20001026_6 by adrian


Add an explanation to errno ..



*** 20001026_5 by db
- check_klines() has to be called after placing tklines as well



*** 20001026_4 by adrian


Tidy up Dianora's event-ing of the channel_cleanup() code:

* change the declaration of channel_cleanup() so it matches the EVH
  function prototype

* Change the call to eventAdd() to not need the typecast to EVH ..
* .. to pass NULL instead of 0 ..
* .. and split across two lines so the line isn't > 80 characters




*** 20001026_3 by db
- removed checkpings to localize it in ircd.c only



*** 20001026_2 by db
- messed up 4am commit. Here is the changes to config.h



*** 20001026_1 by db
- cleaned up kline code in client.c
- missing check_klines in m_kline.c



*** 20001025_10 by db
- split check_pings into two (like it should have been all along)
  check_pings checks for ping timeouts
  check_kline checks for klines
  both call common exit routine
  m_kline has to call check_kline after placing a kline. It would be
  better if it was put on the nice event queue incase a tcm or oper
  places several klines in a row. But then, opers freak when a kline
  doesn't happen instantly.



*** 20001025_9 by adrian


ResolverFileDescriptor isn't a global FD anymore, so don't declare it
as one.



*** 20001025_8 by adrian


Convert the auth timeout checking to be once a second. I can't see this
sucking too badly because timeout_auth_queries_event() doesn't walk
the entire fd array - instead it walks AuthPollList.



*** 20001025_7 by db
- added evenAdd for cleanup_channels



*** 20001025_6 by adrian


tidy up the highest_fd handling. Now, the handling is done through
fd_open() / fd_close(), reducing the number of places tracking is
done.



*** 20001025_5 by db
- why I deleted that crucial code I don't know
  anyway, privmsgs to channels now works again.



*** 20001025_4 by adrian


Move the listener code to use comm_setselect(). 

* accept_connection() has changed to become a PF function for use
  with comm_setselect()
* When a listener is created, comm_setselect() is called to make
  the initial IO on the FD work
* reworked read_message() in s_bsd_poll.c to deal with no listen sockets

All read_message() does now (!) is handle auth and client/server sockets.
Here's an excerpt from the code explaining the major real change
that happened:

   * Since we're going to rip this code out anyway, the current "hack"
   * will suffice to keep things going. The only two things this loop
   * services now is the auth and client/server fds (resolver and
   * listener FDs are done through the new-style interface) . So,
   * we loop again through the poll_fdarray[] array from scratch again
   * and fd's that are not -1 are ready for us to do read-type events
   * with. The pollfd_array[i].fd = -1; in the auth fd loop stops us
   * from looking at the auth fds as client/server fds which would be
   * a Bad Thing(tm) right now. :-)    -- adrian

* We have to recheck the incoming connection code to ratelimit the number
  of incoming connections/sec to stop connection flooders. Uhm, there was
  some code in read_message() from comstud to do this, I'll move it out
  into accept_connection() once read_message() has gone away.



*** 20001025_3 by adrian


Just set the nonblocking flag when we set a socket non-blocking ..



*** 20001025_2 by adrian


Use the pre-munged poll flags for network IO, rather than creating
our own set of POLL* flags.



*** 20001025_1 by db
- removed NO_JOIN_ON_SPLIT
- cleaned up m_join.c a bit
- removed a pile of uneeded #ifdef's



*** 20001024_4 by adrian


Commit the tidyup of the resolver network code (notice I said *network* :) 
-->

* move init_resolver() to a more useful init place and out of init_netio()
* make the DNS timeout checking an event which is triggered once a second.
  I figure that when I rewrite the event system soon to work on milliseconds
  rather than seconds we might revisit this, but doing it once a second
  actually might be better. Dunno yet..
* add comm_setselect() calls in the resolver init and just after the
  recvfrom() to re-register interest in IO.
* remove the evilness in read_message() which does the IO on
  ResolverFileDescriptor, making resolver IO happen through the new network
  IO system

Notes:

* I have *NO* idea how the DNS write flushing works just yet, I guess I'm
  about to find out.

* The resolver might take a little longer - this is simply the by-product
  of shoehorning in the comm_select() call (if there is no other pending
  IO, read_message() can delay for a bit, since the resolver fd isn't
  covered there.) Once read_message() disappears, so will the delays.
  (or I might just fix it somehow..)



*** 20001024_3 by adrian


Remember to initialise the event subsystem early so we can use it.



*** 20001024_2 by adrian


Arrays start at 0, not 1 in C. When we find out the lowest numbered fd,
we need to make sure npollfds is one more than that value, otherwise the
last filedescriptor won't get polled.



*** 20001024_1 by adrian


Commit the fd state tidyup and new IO loop code.

* I've killed GlobalFDList and replaced it with an array of fd structs.         
  (fde_t). This has the fd state (opened, closed, pending io requests,          
  type, description, etc).                                                      
* I've added fd state tracking stuff (fd_open / fd_close).                      
* I've added file fd state tracking stuff (file_open / file_close)              
* I've tidied up logfile permissions in a place or two                          

There's a little weirdness - if you want to include s_bsd.h, you need
to include fdlist.h as well. This will go away eventually ..



*** 20001023_7 by ryan

changed around order things are done to prevent non-base channel pointer
from being used where base channel pointer should be


*** 20001023_6 by db
- modified cjoin to use the ##channel_name as given in original spec
  this should help us slightly in m_sjoin.c
- started cleaning up m_sjoin.c
- duplicated voodoo code into mo_join.. in m_join.c
  handlers still need a lot of cleanup due to the duplicated code...



*** 20001023_5 by toot
fixed channel.c/remove_empty_channels() so it compiled with 
PRESERVE_CHANNELS #defined


*** 20001023_4 by adrian


Added a port of squid's event system. This is a very simple mechanism
to schedule events to happen in some given time period. The main
function you'll be using is:

eventAdd(const char *text, EVH *func, void *data, time_t when, int weight)

where when is the number of seconds you want to have the event run (so
if you want it running a second from now, you'd set when to be 1.)

Read event.c for a more precise description.

What has changed:

* changed this over to use the Block allocator rather than squid's mempools
* disabled debug reporting until I figure out a nice way (ie how the rest
  of the ircd does it) of doing this
* made the time offsets integer, rather than double like they are in squid
* the logic in io_loop() has been changed to allow this to slide in.

Note that eventAddIsh()'s logic on random offsets might be a bit .. off.
I'll come back to this once I've tidied up bits of the code.

I will also be tidying up io_loop() now an event scheduling mechanism
exists, making it much, much less twisted. So any breaks there will
(hopefully) be temporary.



*** 20001023_3 by adrian





first split of the network code into per-commloop modules. The autoconf
magic came from the squid commloops work by Adrian Chadd (me) and
Benno Rice (benno@holocaine.net).

the poll and select specific stuff was moved into s_bsd_poll.c and
s_bsd_select.c . The chosen file is done through some autoconf magic
and variable substitution in src/Makefile.in. I haven't changed any
code itself, simply un-staticized things and shifted things into
seperate files. This is done to preserve some form of CVS sanity.

A noteable here is that I"ve moved the FD_SETSIZE detection for
select() into s_bsd_select.c rather than ircd.c, since this is a more
logical place to check (and die) if FD_SETSIZE < MAXCONNECTIONS.

The autoconf configuration is done using the following options to
configure:

--enable-poll / --disable-poll : Enable or disable the use of poll()
--enable-select / --disable-select : ENable or disable the use of select()

Note that the current autoconf magic checks if poll() exists - since
we aren't using USE_POLL now, we define ac_cv_func_poll/select/whatever
and this is used further into the autoconf magic to decide the
substitutions to do.



*** 20001023_2 by adrian


* add myself as a core member. Uh, thanks again Diane
* add Toby to Hybrid-team, because he wasn't there



*** 20001023_1 by db
- oopsies in fix_key



*** 20001022_6 by db
- committed desrt's patches to add magic voodoo to invite on vchan
  /invite to vchan puts you on right vchan without the !nick key being
  needed.



*** 20001022_5 by toot
fixed spelling of my name in version.c.SH :)


*** 20001022_4 by db
- added patches for invite by  Ryan Lortie <desertangel@mindless.com> (desrt)
- updated contributors/core group



*** 20001022_3 by db
- removed chan_id
- Can't reject long channels for interoperability reasons



*** 20001022_2 by toot
bysin's patch to check for a overly long channel name in /join too.
or you could end up with a channel you couldn't /cjoin..


*** 20001022_1 by db
- ok, sub1_from_channel went through all the work to figure out if the
  root channel could be removed if a sub channel was removed, only it uh
  forgot to make sure it was empty first. (oh oh) This meant that
  the root channel also got removed from the hash when a client left
  the sub chan. oops



*** 20001021_7 by db
- applied bysin's two patches 



*** 20001021_6 by toot
free topic_info when the channel's deleted


*** 20001021_5 by toot
. renamed free_bans_exceptions_denies to free_channel_masks, and had it
  free invite exceptions too.
. remove_empty_channels() wasn't freeing +d (or +I)


*** 20001021_4 by bill

/usr/local/ircd/ IS the default, not /usr/ejb/whatever


*** 20001021_3 by lusky
put DPATH and SPATH back to defaults


*** 20001021_2 by bill


fixed bug in MODE (MODE #non-existant-chan caused segfault)
made attempted JOIN to a juped channel specify between user or oper


*** 20001021_1 by lusky
fix for duplicate 401's for kick #validchan invalnick
ServerStats->is_ref is incremented twice on an X-line
  which is set to 1 (jdc)
STATS P notifications were not sent to opers (jdc)
stats l/L target to FLAGS_SPY (if STATS_NOTICE) (jdc)
uname info only displayed to opers
If X-line port field is 2, reject client but do not send
  a notification to opers
STATS y/Y now oper-only
did NOT add any of the other conf line display restrictions, I think
  we should integrate control of those on a per-line basis in the new
  conf format.


*** 20001020_1 by toot
msg nick with no text made it core..
privmsg/notice give different errors depending what args are missing, so
they check it instead of parse()


*** 20001019_5 by toot
/list #channel was showing the wrong key :P


*** 20001019_4 by toot
cleaned m_list slightly..


*** 20001019_3 by toot
. /join just skips over a subchan you're already in, instead of giving an error.
. /list shows vchans as #chan<!key> if there's subchans for it..


*** 20001019_2 by db
- removed the dns cache built into res.c
- will have to fill out cres_mem with something more appropriate



*** 20001019_1 by lusky
dns cache entries were never fully expiring, stayed in the hashtable forever


*** 20001018_1 by db
- fixed core with who of client not on a channel. ooops
- fixed mo_privmsg
- fixed @# style channel messages 



*** 20001017_1 by lusky
fixed a bug tickled by sending a bogus SERVER command from hacked server
auditted leakage of IP address from get_client_name calls


*** 20001016_10 by db
- prelim changes for m_topic



*** 20001016_9 by toot
now it will remove the basechan when there's no vchans left under it


*** 20001016_8 by toot
. this should remove the basechan after deleting its last vchan, but didn't
. don't bother to show possible vchans if they're already
  in one of them.
. there's one case where the root is empty, and there's only one
  vchan.. just have them join that vchan.
. displays the last nick to join each vchannel for now, and won't show empty vchans


*** 20001016_7 by toot
map_vchan checks root channel too


*** 20001016_6 by db
- semi fixed whois



*** 20001016_5 by toot
. don't allow JOIN to a 'real' subchan name
. some extra brackets in privmsg/notice to kill a compile warning
. mpw JOIN #chan !nick will work on any nick in the channel, just need to
  update show_vchans


*** 20001016_4 by db
- global who should work when its a wild card mask



*** 20001016_3 by db
- fixed bug in m_who



*** 20001016_2 by db
- added prelim vchan support to notice as well
- still have to do @# type of vchan 



*** 20001016_1 by db
- fixed stupid bug with vchan == chptr i.e. top level chptr == vchan
  that would result in it never being removed, since vchan == chptr (top chan)
  would never result in a match ... this led to rework of privmsg to channel

- kick appears to work now on vchan



*** 20001015_5 by db
- m_who.c what a MESS



*** 20001015_4 by db
- the m_mode changes needed
  this allows you to mode +o etc. on sub chans. wheeeeeee



*** 20001015_3 by db
- m_names now recognizes vchan names



*** 20001015_2 by db
- slightly rewrote m_names. its still a stinking mess but getting there
- added function call to make vchan names listing easier



*** 20001015_1 by toot
some more fixes to join/cjoin


*** 20001014_11 by toot
another fix to m_names call in m*_join


*** 20001014_10 by toot
. move add_vchan_to_client lower down, incase of bans etc in m_join
. hopefully m_names works now after /join #chan !id
. put a del_vchan_from_client in remove_user_from_channel


*** 20001014_9 by db
- fixed bug in add_vchan_to_client_cache, reversed two args while at it
- made m_privmsg message right channel 
- m_join also has to update cache



*** 20001014_8 by db
- added code to remove chan from client cache, not used yet
- added checks to ensure client doesn't join twice a subchan, not tested yet
- corrected conflict introduced by me
- added another macro for top level vchan detect



*** 20001014_7 by toot
. fixed typo in s_user.c
. made RPL_WHOISADMIN numeric consistent with dalnet
. changed a ->flags pointer that should have been ->umodes in m_whois


*** 20001014_6 by toot
forgot to change that parv to parc>2


*** 20001014_5 by toot
. don't allow CJOIN to a non-base channel
. don't list sub-channels if they try to /join a sub-channel's
  'long' name
. added an extra arg to m_names so it works after a CJOIN
  (there might be a better way to do this)


*** 20001014_4 by db
- moved show_vchans and find_vchan into vchannel.c



*** 20001014_3 by db
- mod Makefile.in to  add new vchannel.c
- added new vchannel.c for vchan support
- added new vchannel.h for vchan support
- added vchan cache call in m_cjoin.c



*** 20001014_2 by db
- m_names() after cjoin (toot)



*** 20001014_1 by db
- fixed cjoin so you actually look like you are joining the subchan now



*** 20001013_3 by db
- numeric 247 (uptime) got trashed in table. (HOW?) would cause server
  to core on /stats u



*** 20001013_2 by db
- cleaner sub1 fix for vchans



*** 20001013_1 by bill

Added null chptr checking to set_channel_modes()


*** 20001012_2 by db
- fixed bug in sub1_from_channel for vchans



*** 20001012_1 by db
- folded in work toot (Toby Verrall) to7@antipope.fsnet.co.uk
  did for first rough proof of concept vchans. We'll have to go in and
  #ifdef these later.



*** 20001011_1 by lusky
fix for *@*.foo.com I:lines being broken by a user@host.foo.com I:lines
change chptr->vchans to chptr->vchan_flag in channel.c to get this tree
  to compile.  not sure if this is correct.


*** 20001006_4 by db
Make virtual channels doubly linked.



*** 20001006_3 by lusky
updated autoconf and Makefile.in to support flex when available


*** 20001006_2 by lusky
deleted ChangeLog.old and include/defs.h


*** 20001006_1 by lusky
updated Makefile.in's to support parallel make ala -6
fixed up cjoin a little so it would compile
synced up changes from -6rc4 to -6rc5(20001005_3):
 added CVS Id tags to numerous files
 brought Hybrid-team and version.c.SH
 deleted ChangeLog.old and include/defs.h
 Fixed misnamed va var in sendto_realops()
 changed ltrace to be consistant with trace for non-opers
 mode channel +e now returns an error to non-chanops
 unauth connection notices now include servername/port (jdc)
 changed "juping locally" to "locally juping" (gp)
 typo in stats z display (gp)
 typo in channel jupe oper notice (db)
 new config.h option ALLOW_DOT_IN_IDENT


*** 20001003_1 by db
- initial changes to add cjoin for vchan support
 


*** 20000930_1 by db
- started adding VCHAN code. I



*** 20000929_1 by ejb
merged toot's patch to resync with -6rc4

*** 20000926_1 by ejb
- added myself to core team list in version.c.SH
- added ircnet's +I invite exceptions
- remove {add,del}_*id(), replaced with a single function
  add_id and del_id, removes code duplication.
- added seperate error_sents for +I and +d in channel.c.
- removed some false BAN_INFO ifdefs



*** 20000907_1 by ejb
initial stab at IPv6 .. it doesn't compile with IPV6 defined yet..



*** 20000813_1 by ejb
Large commit, folding in a number of changes i made over the weekend.
- add n!u@h for topic_info ala ircnet.
- stats p notice.
- removed some old non-TS cruft.
- unreg users can't send version.
- added +a umode, shows oper is admin in whois 
  if they are 'admin=yes'.
- users can see the topic of a -s channel they aren't
  on (but can't set it even if it is -t, to prevent
  topic floods *sigh*)
- many changes in parse.c .. fixed a few bugs, rewrote
  the argument parser code, added support for catching
  users passing not enough parms before the m_ function
  is even called.
- you can now set in ircd.conf whether channels have to
  be +i for an invite to work.
- added a numeric (504) for sending to users trying to
  invite remote users to +i channels.
- started changing m_* functions to not check parc anymore,
  in most cases parse() has already handled this.
- move glines from config.h to ircd.conf
plus a lot of other stuff i probably forgot.



*** 20000731_1 by db
- Added Pie-Man changes, added him to list of contributors



*** 20000724_1 by db
- commiting in changes made by pie-man (ins oper)



*** 20000719_1 by db
- redid to use handlers. untested, but it copmiles at least



*** 20000525_1 by wnder
a strncpy --> strncpy_irc
fix for a potential dereference of bad ptr in vsendto_prefix_one (db)


*** 20000516_1 by wnder
 Fix for % in user's ident bug


*** 20000407_1 by db
- unused variable never caught, uneeded va_end caused solaris compiler
  to not compile



*** 20000405_1 by db
- committing some quick hacks for verifying block allocator
  is not leaking.
  These should be #ifdef'ed perhaps in future.
  when an oper does /stats $
  four files will be written to DPATH
  which will contain hex values of allocated memory for each client

  local_block_allocator_client_list.txt from block allocator
  local_client_list.txt                 from link list

  remote_block_allocator_client_list.txt from block allocator
  remote_client_list.txt                 from link list

  code external to the ircd is needed to verify consistency



*** 20000404_2 by db
- clean ups to parser



*** 20000404_1 by db
- fixed memory leak in parser code. strdup in lexer never freed
  found by Krome from ircnet



*** 20000402_10 by db
- MAX_SETBACK_TIME added



*** 20000402_9 by db
- more cleanups to parser
- make sure 'O' is converted to global=yes in convertconf



*** 20000402_8 by db
- clean: in Makefile remove .c files for parser
- cleaned up serverinfo code
- make sure network order not host order for local ip



*** 20000402_7 by db
- further cleanups to remove #ifdef's 



*** 20000402_6 by db
- removed last remnant of cidr_ban (sorry is)



*** 20000402_5 by db
- broke ZIP_LINKS forgot to remove all #ifdef's on SENDQ_ALWAYS
  "is" and "Perly" found it



*** 20000402_4 by db
- changed comment in res.c also trimmed if down to match undernet's



*** 20000402_3 by db
- changed CONFIG_H_LEVEL_6 to CONFIG_H_LEVEL_7
- updated config.h.dist to match config.h



*** 20000402_2 by db
- Pointed out by "is" with non standard p vs. s this else if is wrong
  "is" <ejb@debian.org>



*** 20000402_1 by db
- This bug caused only the first connection in a class to be tried
  i.e. if you had several C: lines in one =class= only the first
  C: line was ever used. This is code that was #ifdef'd out from original
  hybrid-5                    



*** 20000401_1 by db
- removal of #define kludge for GlobalSetOptions



*** 20000330_1 by db
- large resync , folding in a number of changes contributed by is
  This moves some config.h items into the conf file



*** 20000319_1 by lusky
Changed my email address, this is a test commit (jrl)


*** 20000209_1 by db
- fixed goof with removing of an #ifdef for TOPIC_INFO 
  patch done by is- 



*** 20000201_3 by db
- synced up convertconf to current parser format



*** 20000201_2 by tomh

Fix UMR picked up by purify:
****  Purify instrumented ircd (pid 11725)  ****
UMR: Uninitialized memory read (15 times):
  * This is occurring while in:
        read_message   [s_bsd.c:909]
        main           [ircd.c:688]
        _start         [crt1.o]
  * Reading 4 bytes from 0xefffe5ac on the stack.
  * Address 0xefffe5ac is local variable "poll_fds" in function read_message.



*** 20000201_1 by db
- converted separate user/host forms to user="user@host.part"; forms
  it looks nicer, and easier for admins to work with I think. Plus recommended
  by the #coder-com crew. ok.
- fixed stupid in initconf where it missed # commented out lines and
  tried to parse old format as new...
- folded in the old -5 nick collide code already folded into the -6 tree.
  its #ifdef'ed for future fixes...



*** 20000131_1 by db
- improvements to connect section. allow multiple hub_masks etc.



*** 20000124_3 by db
- first work on logging section, 
  logging level can be set from new conf file format now.



*** 20000124_2 by db
- updated convertconf



*** 20000124_1 by db
- removed #ifdef for ZIP_LINKS
  I hate #ifdef's



*** 20000123_2 by db
- added fbunputc mimics unputc (Sorry Tom)
- single conf file, is either old style or new style determined
  at initconf time (Again, sorry Tom)
  Could have done it simpler, but this is safer for now...



*** 20000123_1 by db
- cleaned up some "bare" 512 defines. added new IRCD_BUFSIZE define
- added better error recovery to parser, 
- added better error reporting.
- tentative new conf format mostly finished, will "warp" it a bit
  more to match Kev's proposed format as possible, given undernet vs.
  efnet differences..
- need to handle ircd.conf form as the new format as default,
  and fall back to old format as needed. i.e. kludge code still to 
  be removed in source...



*** 20000122_1 by db
- more cleanup on new conf file parser..
  using "auth" instead of "client" as per Kev's document..



*** 20000121_1 by db
- preliminary serverinfo section done



*** 20000120_1 by db
- CONNECT in new parser works, needs full testing



*** 20000117_3 by db
- added a few more sections



*** 20000117_2 by db
- Added quarantine



*** 20000117_1 by db
- continuing with new parser code... listen/operator tested



*** 20000116_7 by db
- bunch of changes in order to have class names not numbers. *sigh*
  I toyed with the idea of keeping class #'s and having class_names
  to class #' mapping somewhere, but thats just getting silly.. sooo....
  Here we are...



*** 20000116_6 by db
- make_class should return a 0'ed class to be safe



*** 20000116_5 by db
- prelim. change before I start on class names



*** 20000116_4 by db
- oper section complete except for class operations..



*** 20000116_3 by db
- checkpoint with operator section mostly working...
  class code has to be rewritten still



*** 20000116_2 by db
- oops. I changed Makefile rather than Makefile.in



*** 20000116_1 by db
- copyright touch ups
- missing -ll in Makefile



*** 20000115_3 by db
- The lex/yacc files...



*** 20000115_2 by db
- first very rough working lex/yacc under ircd-hybrid..
  parser doesn't actually do anything.... yet...
  Tom, we could use a fileio pushback, to push back a line thats
  "not for us"



*** 20000115_1 by db
- more cleanups to parse code



*** 20000113_3 by db
- someone forgot to add a file. wonder who



*** 20000113_2 by db
- externalized the old parser, unfortunately, this means a lot
  more of the s_conf interface is visible ;-(, can do better in the future...
  This is in preparation for new parser inclusion.
  This will (ick) allow us to use both old conf files and new format conf files
  for backwards compatibility. (I'm not terribly happy about this, but...
  Hi Tom!)



*** 20000113_1 by db
- updated client/deny sections to use new IP_TYPE
- fixed union to use struct ip_value



*** 20000112_1 by db
- returned to ';' at end of each section, this is actually easier to
  recover from errors; just scan for ';'
- updated convertconf to produce test file
- added IP token to lexer and to client section



*** 20000111_11 by db
- added DENY 



*** 20000111_10 by db
- more work on yacc/lex parser
  added "kill" open to discussion, but efnet has "K" and "D" lines
  


*** 20000111_9 by db
- changes to bring it into line with Kev's sample conf just a tiny bit
- removed that dumb ';' at end of sections



*** 20000111_8 by db
- tiny cleanup to Makefile
  Copyright notice fixed 



*** 20000111_7 by db
- added preliminary yacc/lex test parser code



*** 20000111_6 by db
Directory /usr/hybrid/ircd-hybrid-7/src/test/newconf added to the repository


*** 20000111_5 by db
- oops port in connect was quoted



*** 20000111_4 by db
- more tiny tweaks



*** 20000111_3 by db
- tweaks to new conf format



*** 20000111_2 by db
- sample ircd.conf and its converted ircd.conf.new 



*** 20000111_1 by db
- Now pretty much handles a "normal" conf file.. output is
  a "new" style conf format file, with details still to be hashed out.
  Do we want to handle multiple C/N's ? multiple H lines? *sigh* yes
  Thats next, but not yet.
 


*** 20000110_4 by db
- tiny tweak much more to do



*** 20000110_3 by db
- Nearly done. TODO Finish off I lines (I line prefixes)
  HUB or LEAF control set in old M line



*** 20000110_2 by db
- updated Makefile, fleshed out convertconf more



*** 20000110_1 by db
- small cleanup to s_conf.c before the bigger one



*** 20000109_12 by wnder
woopsies


*** 20000109_11 by wnder
Added documentation of the iauth protocol


*** 20000109_10 by db
- bit more fleshing out of convertconf.c



*** 20000109_9 by db
- first rough outline of conversion program to convert old style
  to new style conf file format. No Makefile, incomplete still.



*** 20000109_8 by db
- more cleanups, made consistent... no need for MSG_PRIVMSG/MSG_NOTICE
  other m_ files don't do that



*** 20000109_7 by db
- cleanups



*** 20000109_6 by db
- m_mode bursts/looks for channel mode on uplink in LazyLinks code



*** 20000109_5 by db
- removed uneeded #include



*** 20000109_4 by db
- forgot to remove now unused m_message.c



*** 20000109_3 by db
- split m_privmsg and m_notice into two files. My rationale for doing this
  is: slightly faster, no more if(notice) in code, m_privmsg/m_notice
  rarely change anyway.



*** 20000109_2 by wnder
Added support for when SerialNumber rolls over to 0


*** 20000109_1 by db
- as fbgets is re-entrant, redid .include code. Much nicer



*** 20000108_5 by wnder
Implemented serial number method to keep track of searched nodes.
(hi diane!!)


*** 20000108_4 by db
- LazyLinks /list on leaf is sent to its uplink now
- still bug to track down with leaf connected to hub, hub joins net
  leaf does not see channel bursts properly



*** 20000108_3 by wnder
Implemented unsortable I/K lines


*** 20000108_2 by db
- still slowly working in LazyLinks version 2 code. nick collides
  have to be handled by the LazyLinks uplink, for now sending back
  KILL's (which were removed!) as needed...



*** 20000108_1 by wnder
fixed missing #include "s_conf.h"


*** 20000107_4 by db
- sticky / key



*** 20000107_3 by db
- don't core if chptr == NULL in sendto_match_servs()
  shouldn't normally ever happen, but does in LL 



*** 20000107_2 by db
- closer version of LazyLinks version 2



*** 20000107_1 by db
- split out m_user.c m_nick.c, modified s_user.c s_user.h Makefile.in
  LazyLinks is in unworkable state in this version.



*** 20000106_1 by db
- fixed bug introduced in ReplaceQuotes, '\#' was not handled correctly.



*** 20000105_16 by db
- all over the place



*** 20000105_15 by db
- yet another hidden HUB in .h



*** 20000105_14 by db
- removed more pesky #ifdef HUB hidden in .h files



*** 20000105_13 by db
- always initialize serverMask



*** 20000105_12 by db
- HUB removed, server determines if its HUB or LEAF by looking
  at (Now unused) port line in M line. If its a 1, its a HUB, if
  its missing or anything else, its a LEAF.
  Can be queried from /admin
  Yes, its a hack for now.



*** 20000105_11 by db
- removed HUB from config.h etc. now in a config entry



*** 20000105_10 by db
- allow single dot in user names to allow for "first.last" user name style



*** 20000105_9 by db
- removed unneeded include



*** 20000105_8 by db
- oops. missed comment in m_lljoin.c



*** 20000105_7 by db
- oops. removed comments belonging to channel.c only



*** 20000105_6 by db
- committing the split out m_cburst.c m_drop.c m_lljoin.c



*** 20000105_5 by db
- split out m_drop.c m_cburst.c m_lljoin.c



*** 20000105_4 by db
- further cleanups to s_conf.c



*** 20000105_3 by db
- Further cleanups to s_conf.c



*** 20000105_2 by db
- fixed missing Y line detection code which got broken in clean up



*** 20000105_1 by db
- cleanups to dbuf code. Try to flush connections if dbuf list is
  empty then try to allocate.
- tiny start on new channel hierarchy scheme.



*** 20000104_6 by wnder
Prettied up source files by converting tabs to spaces


*** 20000104_5 by db
- fixed DEBUG error in s_conf.c



*** 20000104_4 by db
- also report how many malloc()'ed dbufs there were max



*** 20000104_3 by db
- changed slightly wording in LazyLinks As Implemented doc
- removed more DEBUGLL debug cruft
- simplified m_join CBURST call



*** 20000104_2 by db
- added "Lazy Links As Implemented in Hybrid" doc



*** 20000104_1 by db
- removed more #ifdef's removed BAN_INFO BAN_UH



*** 20000103_7 by db
- mods to try to flush connections if dbufs are used up



*** 20000103_6 by db
- it all works now (LL). channel cleanup etc. 



*** 20000103_5 by db
- this version doesn't core as often. *sigh*
  cleanup channels code needs to be gone over again, its stable
  without.
- removed some cruft and useless comments from client.c



*** 20000103_4 by db
- *sigh* code got lost in the shuffle
  fix stats c so n lines show as n not N
  fix spacing on 333 numeric to match others




*** 20000103_3 by db
- removed last vestige of TOPIC_WHO define



*** 20000103_2 by db
- fixed a typo in ircd.c



*** 20000103_1 by db
- Folded in Perly's cleanup channel code. The idea is to remove
  channels from the lazylinks leaf server if no local members are on them
  and they haven't been used by anyone locally in a "while" where
  "while" is set in s_serv.h CLEANUP_CHANNELS_TIME seconds.
  I've redone the destroy channel code. It should work, but its untested.
  CLEANUP_CHANNELS_TIME is set way low still for debugging,
  its currently 30 seconds. In production it could range from 15 to 60 minutes
  I'd guess.



*** 20000102_9 by db
- key handling was broken in m_cburst



*** 20000102_8 by db
- oops got an if backwards key when NULL cores it



*** 20000102_7 by db
- try to negotiate a non LL connect if serverMask's get all used up
- report all serverMask's used up. That will mean a recode ;-)



*** 20000102_6 by db
- fixed a bug in m_join.c
- cleaned up LL channel key handling
- don't assign serverMask's to non LL servers



*** 20000102_5 by db
- added LazyLinks.txt document outlining original Lazy Links protocol
  its been modified for -7
- ensure serverMask of 0 just causes restoreUnusedServerMask to return



*** 20000102_4 by db
- First working Lazy Links implementation
  still needs debugging/testing etc.



*** 20000102_3 by db
- bug reported by Colten Edwards in m_userhost.c



*** 20000102_2 by db
- oops bogus code in m_sjoin.c



*** 20000102_1 by db
- few tidy ups in prelim LL code



*** 20000101_4 by db
- implemented DROP, not tested, not used yet.



*** 20000101_3 by db
- Preliminary rough cut at Lazy Links, still a lot of mopping up to do
  'n' in c/n's means try lazy link, 'N' means do normal.



*** 20000101_2 by db
- Cleanups to allow DEBUGMODE to compile



*** 20000101_1 by db
- cleanup of LITTLE_I_LINES #ifdef



*** 19991231_4 by db
- renamed channel to GLobalChannelList in jupe channel code



*** 19991231_3 by db
- more cleanup of s_conf.c



*** 19991231_2 by db
- Preliminary cleanups on s_conf.c



*** 19991231_1 by db
- missing NULL assignment would cause double free's and eventual
  core on malformed U: lines.



*** 19991230_11 by wnder
more iauth fixups - this should finish it!


*** 19991230_10 by wnder
IAuth fixups


*** 19991230_9 by db
- oopsies in opcount code spotted by Perly.. flag has to be used
  before set...



*** 19991230_8 by db
- more missed updates local_cptr_list -> LocalClientList



*** 19991230_7 by db
- missed a opcount-- in m_sjoin.c
- missed an #endif for IAUTH



*** 19991230_6 by db
- Added chanop counter to Channel struct, keep track of current op count
  use instead of that nasty loop in SJOIN code



*** 19991230_5 by db
- folding back in USE_IAUTH code



*** 19991230_4 by db
- completion of mop up of resync with -6 tree. Compiles again



*** 19991230_3 by db
- mop up of resync of -7 with -6



*** 19991230_2 by db
- mop up -7 tree resync with -6



*** 19991230_1 by db
resync with current ircd-hybrid-6 tree



*** 19991217_1 by db
1) folded in d line fix from -6
2) folded in res.c core bug fix from -6



*** 19991109_1 by db
- changes to sendto_one_type to not send @# style of message to non
  CHW servers
- m_userhost old behaviour restored, but rewritten. Need to support
  up to 5 userhost requests, this fixes ircle clients which depend on
  this behaviour.



*** 19991022_1 by db
- disallow -ve limit on mode #channel +l 



*** 19991017_2 by db
- missing mask check in IP kline code. no idea why.



*** 19991017_1 by db
- removed (+) cruft as this was a Tanerism



*** 19991013_10 by tomh
Removed CONNECTFAST garbage, it was causing production boxes to load up on
SYNs on the primary port and killing poll performance.


*** 19991013_9 by lusky
fixed m_ison to put trailing space on 303 responses
CONNECTFAST is always defined for USE_POLL now, was causing very poor
  accept performance on heavily loaded non-Solaris machines using poll()


*** 19991013_8 by tomh
put USE_POLL back in setup.h.in, removed stuff that wasn't needed


*** 19991013_7 by lusky
syncd config.h.dist to config.h


*** 19991013_6 by wnder
missing macros


*** 19991013_5 by lusky
updated opers.txt to include set log


*** 19991013_4 by db
- fixed misnomer



*** 19991013_3 by db
- corrected table in s_log.c for log level to string



*** 19991013_2 by db
- added strings to m_set LOG



*** 19991013_1 by db
- botched wild card matching fixed



*** 19991011_1 by db
  It turns out, that cptr->fd is <0 in some cases when its being used, just
as Q described. I was confused at first, because it sounded like he
was saying cptr was =freed= then being used. It appears its still a valid
pointer, but its fd has been closed...

  The ideal solution would be to make sure the cptr is removed from the 
channel link list before the code even gets to sendto_common_channels()

  In any case, using an fd < 0 in this section is a BAD THING 



*** 19991009_1 by db
- better fix for umode code



*** 19990925_1 by db
- simpler mode letter to bit mask table lookup, safer



*** 19990924_2 by db
- yet another ->name instead of ->user this one in report_tklines



*** 19990924_1 by db
- This patch corrects a case where a normal user can oper themselves. oops.
- It also corrects a possible core due to a bogus H or L line. (neph)



*** 19990914_1 by wnder
IAuth updates:
 * mtree.c is (hopefully) approaching it's final stages - much
   more bulletproof now.


*** 19990913_1 by wnder
IAuth updates:
 * added a new mtree module - handles I: and K: lines. Please
   throw all sorts of odd combinations at it to give it a good
   run - highly experimental :-)


*** 19990912_2 by wnder
IAuth updates:
 * got "I line is full" check working
 * ircd now sends iauth it's list of classes (Y:) upon
   connection


*** 19990912_1 by wnder
IAuth updates:
 * bug fix in iauth connection code
 * register_user() has been replaced with:
   GreetUser()            - for local clients
   register_remote_user() - for remote clients
   (all under #ifdef USE_IAUTH)


*** 19990911_1 by tomh
add fd check to other #ifdef SENDQALWAYS


*** 19990910_6 by tomh
types cleanup
NOTE: the interface in s_zip.c is a little borked, the length field should
not be used to convey error results


*** 19990910_5 by tomh
type cleanups, remove bogus casts


*** 19990910_4 by tomh
type cleanups


*** 19990910_3 by tomh
change poll.h to sys/poll.h


*** 19990910_2 by wnder
IAuth changes:
 * the listen port is now dynamically configurable (iauth.conf)
   - I'll have to do something similar to ircd.conf
 * k/i/q lines (read at run-time from iauth.conf)


*** 19990910_1 by wnder
IAuth changes:
 * fully functional and tested: K, I, Q lines (D and G to come)
 * non-blocking connect to IAuth server
 * _every_ change i made is under #define USE_IAUTH


*** 19990909_26 by tomh
ewps make sentinel char* instead of void*


*** 19990909_25 by tomh
change (void*)1 to valid sentinel pointer


*** 19990909_24 by tomh
type fixes


*** 19990909_23 by tomh
cleanups


*** 19990909_22 by tomh
missing header


*** 19990909_21 by tomh
change return type for get_sendq, remove redundant casts


*** 19990909_20 by tomh
change return type for get_sendq


*** 19990909_19 by tomh
remove (char*)NULL casts, pointless


*** 19990909_18 by tomh
remove non-ansi prototype for crypt


*** 19990909_17 by tomh
change int to size_t in accept_connection


*** 19990909_16 by tomh
non-ansi prototype for sync_channels


*** 19990909_15 by tomh
remove redundant initializer


*** 19990909_14 by tomh
cleanup types, bug fix


*** 19990909_13 by tomh
replaced wrong type


*** 19990909_12 by tomh
remove misplaced cast


*** 19990909_11 by tomh
remove inappropriate casts in MyFree, rename class c_class


*** 19990909_10 by lusky
killpath fixes (jl)
check for client instead of connect in m_links


*** 19990909_9 by tomh
missing include


*** 19990909_8 by tomh
more type fixups


*** 19990909_7 by tomh
fix bug in dopacket return values


*** 19990909_6 by tomh
incorrect type usage


*** 19990909_5 by tomh
removed non-ansi prototypes for flud code from
we need to review this sort of thing better, sigh


*** 19990909_4 by tomh
add missing header


*** 19990909_3 by wnder
everything seems to be working again - just took out iauth/
from Makefile


*** 19990909_2 by wnder
more #ifdef USE_IAUTH stuff


*** 19990909_1 by wnder
Ok, sorry for the broken compile - I put all the iauth code
in the ircd tree under #ifdef USE_IAUTH so hopefully nothing
else will be affected until it's good and ready - i'll do a
checkout after this to make sure everything's fine.


*** 19990908_2 by lusky
fixes to userhost, changed to -5 style


*** 19990908_1 by wnder
IAuth changes:
 * put dns and ident back into s_auth.c
 * added kline check to iauth


*** 19990907_2 by tomh
move dbuf cleanup to free_client, fix send.c bug


*** 19990907_1 by lusky
killpath is now opers only
+k/-k compatiblity issues
Makefile distclean cleanup for iauth


*** 19990906_4 by tomh
little logic fix


*** 19990906_3 by tomh
little logic tweaks


*** 19990906_2 by tomh
read dbufs right into client buffer


*** 19990906_1 by db
- -k should remove key only if matching key or its a *
  thats a bug. 



*** 19990904_1 by tomh
change (start < end && IsEol(*start)) to (start < end)


*** 19990903_2 by wnder
IAuth now does dns queries


*** 19990903_1 by tomh
bug fix


*** 19990902_8 by tomh
rewrite dbuf.c


*** 19990902_7 by wnder
test


*** 19990902_6 by wnder
oops


*** 19990902_5 by wnder
ircd needs these changes to work with iauth - as of right now,
ircd attempts a connection to 127.0.0.1 port 4444 where it
expects the IAuth server to be - you just need to run
-7/iauth/source/iauth first so it listens on 4444. In the future,
the iauth host/port will be dynamically configurable.


*** 19990902_4 by wnder
ident support


*** 19990902_3 by wnder
minor fix


*** 19990902_2 by wnder
IAuth updates: Got ident query working


*** 19990902_1 by lusky
added check for '#' in username and hostname of /quote kline


*** 19990901_10 by wnder
goes with ircdauth.c


*** 19990901_9 by wnder
ircd module to allow communication with iauth


*** 19990901_8 by wnder
IAuth needs a makefile too!


*** 19990901_7 by wnder
more iauth stuff


*** 19990901_6 by wnder
Changes to accomodate iauth


*** 19990901_5 by wnder
Iauth headers


*** 19990901_4 by wnder
IAuth source files : as of right now IAuth accepts authentication
queries of the form: DoAuth <ID> <ip address> and returns an
answer of the form: DoneAuth <ID> <username> <hostname>.
Ident/DNS have not been completed yet.


*** 19990901_3 by wnder
Directory /usr/hybrid/ircd-hybrid-7/iauth/source added to the repository


*** 19990901_2 by wnder
Directory /usr/hybrid/ircd-hybrid-7/iauth/include added to the repository


*** 19990901_1 by wnder
Directory /usr/hybrid/ircd-hybrid-7/iauth added to the repository


*** 19990831_7 by tomh
cleanup dbuf interface, code will follow


*** 19990831_6 by tomh
break out m_nick


*** 19990831_5 by tomh
Changed MyFree to automatically set the pointer to zero after freeing it.
#define MyFree(x) do { if ((x)) { free((x)); (x) = 0; } while (0)
The assignment is cheap, and it should eliminate double free issues.


*** 19990831_4 by tomh
break out m_user


*** 19990831_3 by tomh
use development CFLAGS, change for release


*** 19990831_2 by wnder
standard gnu copyright


*** 19990831_1 by wnder
New macro: IsEol() which looks for \r or \n characters


*** 19990830_2 by db
- left over aconf->user gets freed twice, causing some malloc packages
  to leave their lunch all over the disk.... NULL things after every
  free silly... -db 



*** 19990830_1 by lusky
jk's umode +O fix


*** 19990826_1 by lusky
turned on ANTI_DRONE_FLOOD by default
sync'd config.h.dist
include class.h in m_message.c


*** 19990825_3 by lusky
cleaned up tools/Makefile.in
added CVS Id tags to a many files


*** 19990825_2 by db
- Don't be lazy *BAD* Diane, BAD BAD BAD



*** 19990825_1 by db
- fixed stupid in s_conf.c
- reconciled -7 with -6 tree



*** 19990821_2 by tomh
removed unused struct member


*** 19990821_1 by tomh
break out m_hash from hash.c


*** 19990820_1 by tomh
client struct rearangements


*** 19990819_10 by tomh
fixups for missing stuff when disabled features are turned on


*** 19990819_9 by tomh
rename channel to GlobalChannelList


*** 19990819_8 by tomh
little cleanups


*** 19990819_7 by tomh
broke out the rest of the commands from channel.c


*** 19990819_6 by khuon
Added the missing include for common.h



*** 19990819_5 by tomh
new files, work in progress


*** 19990819_4 by tomh
Directory /usr/hybrid/ircd-hybrid-7/src/conf added to the repository


*** 19990819_3 by db
- cosmetic change, U lines without a password appear with * instead of <NULL>



*** 19990819_2 by tomh
split out m_join.c


*** 19990819_1 by tomh
add new m_command (m_join), sort msg strings


*** 19990818_3 by tomh
call release_client_dns_reply for servers too


*** 19990818_2 by db
- fixes for U and X lines



*** 19990818_1 by db
- fixed compile errors with SLAVE_SERVERS
- fixed coring problem with SLAVE_SERVERS



*** 19990817_2 by lusky
fixed LIMIT_UH and IDLE_CHECK which were using old structs


*** 19990817_1 by db
- Hide path on kill from "victim"
- Hide path on kill from oper to non opers



*** 19990816_4 by tomh
bug fix for reverse dns mismatch


*** 19990816_3 by tomh
clean up dn_expand result checks


*** 19990816_2 by lusky
removed redundant "New highest connections" server notice


*** 19990816_1 by tomh
bullet proof resolver against bogus replies


*** 19990815_6 by tomh
more fixes for memory counting


*** 19990815_5 by tomh
fixup cryptic message, remove XxxAccess


*** 19990815_4 by tomh
removed FLAGS_CHKACCESS


*** 19990815_3 by tomh
more memory count bug fixes, fix SYSLOG_USERS bug


*** 19990815_2 by tomh
cleanup memory counting code, still more to do


*** 19990815_1 by tomh
cleanup memory counting code


*** 19990813_2 by tomh
remove redundant check


*** 19990813_1 by tomh
count fix


*** 19990812_1 by tomh
hash function fix


*** 19990811_2 by lusky
throttle accept errors in listener.c
oper motd rehash bug fix from perly
ensure that SERVER must come before SVINFO (jl)
neglected to detach_conf for umode -o (jl)


*** 19990811_1 by tomh
fake direction bug fix


*** 19990810_4 by tomh
removed unneeded include


*** 19990810_3 by lusky
fixed bug with NO_JOIN_ON_SPLIT on a coldstart
added include for stdlib.h to mkpasswd.c
moved rcs Id into comments in fixklines.c


*** 19990810_2 by db
- %lu screws up idle times as seen by a lot of scripts, notably bitchx *sigh*



*** 19990810_1 by db
- FLAGS_SPY was being checked against old flags, its now umodes *sigh*



*** 19990809_3 by db
- missed the user mode +b for bots
- applied neph's operwall/wallops pacing patch



*** 19990809_2 by db
- fixes to allow SLAVE_SERVER to work
- RPL_MYINFO should report the user modes and channel modes available
  we've added +x user mode and +d channel mode



*** 19990809_1 by db
- missing #include breaks SLAVE_SERVERS



*** 19990806_1 by sean
Diane's freaky patch


*** 19990805_4 by db
- fixed rehash dump, would core on bad admin line



*** 19990805_3 by db
- user_mode allowed decrement of oper count even if client was not opered to begin with



*** 19990805_2 by db
- botch in client.h, umodes were moved to umodes in client, forgot
  to redefine the macros for SetInvisible etc. this broke remote
  setting of +i on clients. major bug.



*** 19990805_1 by db
- bug in stats Q line found by Dustin Marquess (Jailbird)



*** 19990804_3 by tomh
fix luser count bug


*** 19990804_2 by db
- fixed broken m_unkline.c it would unkline everything. duh



*** 19990804_1 by db
- fixes IP Klines not showing host



*** 19990803_2 by db
- updated .depend
- added m_set for LOG



*** 19990803_1 by db
- oops. USE_ALLOW_OP was never defined. use NO_CHANOPS_WHEN_SPLIT instead
  This one has to go into the -6 tree before release as well.



*** 19990802_9 by tomh
missed a log thing in m_kill somehow


*** 19990802_8 by tomh
missed one


*** 19990802_7 by tomh
remove struct.h includes, new .depend


*** 19990802_6 by tomh
removed unused data member from client struct


*** 19990802_5 by tomh
changed 2 headed function calls, removed unused data member in client struct


*** 19990802_4 by db
- goofed the 216 reply



*** 19990802_3 by db
- bug in mtrie_conf.c causing ~ klines not to work



*** 19990802_2 by db
- major bug in s_conf.c to do with reading of kline.conf



*** 19990802_1 by db
- removed struct.h



*** 19990801_19 by lusky
testing to see that the serial number isn't jumping


*** 19990801_18 by lusky
ChangeLog should be automated now.  Also the serial number should
no longer jump more than one because of a commit of multiple subdirs.
Please be descriptive and unique in your commit comments.


19990801_17 by lusky
I think it's working this time.

version hybrid-7-current 1999-08-01 to present
* Restarted changelog
-Rodder

