This repository has been archived on 2025-02-12. You can view files and clone it, but cannot push or open issues or pull requests.
NeoStats-NeoIRCd/doc/technical/whats-new-code.txt
2002-08-13 14:45:13 +00:00

42 lines
2.1 KiB
Text

Whats changed in the codebase
# $Id: whats-new-code.txt,v 1.2 2002/08/13 14:45:08 fishwaldo Exp $
First, please note one thing - a *LOT* has changed in hybrid-7.
* Most of the file descriptor and network code has been rewritten.
A lot of ideas were borrowed from squid, but they have been simplified
in places and extended in others to cover the needs of hybrid-7.
The core network routines now sit in src/s_bsd.c. There are some remnants
of client/server specific functions which should really be moved.
The actual network IO loop lives in src/s_bsd_${type}.c where ${type}
is the type of network loop (poll, select, kqueue, etc.)
You can select the type of network loop by passing --enable-${type} /
--disable-${type} to configure.
Note: the code hasn't been rearranged, its been rewritten. We think
it is more efficient, but the split-list code in s_bsd_poll.c needs some
further research.
Please read the documentation available, which will go into more detail.
* An event system has been added, again borrowed mainly from squid. This
allows periodic events (channel cleanup, server connection retries, etc)
to be scheduled without needing to add it to the main loop.
* The old dbuf code (send and receive buffering for clients/servers) has been
replaced by a new module - linebuf. The linebuf code breaks data into
"lines" which allows flood prevention and limiting to be performed before
sending the code to the main parser.
* Server to server links are now handled by the 'servlink' program
(located in the servlink/ directory). After negotiating a server<->server
link, (CAPAB/SERVER/PASS or CAPAB/CRYPTSERV/CRYPTAUTH) hybrid-7 will
fork, then exec a servlink process. ircd-hybrid communicates with the
program using a control socket (turn on/off crypto/zip, etc), and
a data socket (which looks to the rest of the code like a network socket
connected to the remote server). The servlink process handles encryption
and compression of server links, but is still compatable with ziplinks
used in hybrid-6, and the hybrid-6 cryptlinks patch.