Commit Briefs
Version 0.7.7 (origin/branch-0-7-x, tags/rel-0-7-7)
The info text ("real name") of users is set to "-" if none has been specified
using the USER command (e. g. "USER user * * :"). Reason: the original ircd doesn't like empty ones and would KILL such users. (from HEAD)
Fixed (optional) TCP Wrapper test which was broken and could result in
false results. Thanks to Fuminori Tanizaki <tany@mcnet.ad.jp>!
Fixed error messages related to server name configuration; updated
sample configuration file.
Version 0.7.6 (tags/rel-0-7-6)
Fixed abort() ("server crash") when INVITE'ing users to nonexistent
channels. Bug found by <hiddenx@wp.pl>. (from HEAD)
Release 0.7.5, debian release 0.7.6-0.1ab. (tags/rel-0-7-5)
Version 0.7.1 (tags/rel-0-7-1)
Version 0.7.0 (tags/rel-0-7-0)
ngIRCd 0.7.0-pre2 (tags/rel-0-7-0-pre2)
The server tried to connect to other servers only once when DNS or socket
failures occured. [from HEAD].
Added implicit initialisation of "i" in Conf_GetServer to workaround a egcs
2.91.66 bug which claims that this valiable could be used uninitialized.
Added some defines for Linux/glibc, reverted unused test for poll(), and
enhanced summary output.
Changed documentation directory to ".../share/doc/ngIRCd" (and removed the
variable PACKAGE for better Debian automake-1.4 compatibility).
Added support for TCP Wrappers; redesigned configuration result output;
Changed some "--enable"/"--disable" switches to "--with"/"--without".
The server didn't validate wheather the "target" client of a channel
user mode change is a valid channel member or not.
- Check functions only on systems that support prototypes, elder cpmpilers
become confused instead!
- Fixed up command forwarding: only to servers!
- Forwarding of WHOIS was broken in some situations.
- Changed "once"-server-config-flag into a generic flag.
- Changed semantics of "NGIRCd_Passive".
- New functions Conf_EnableServer(), Conf_DisableServer() and Conf_AddServer().
- Changed "once"-server-config-flag into a generic flag.
- New commands CONNECT and DISCONNECT.
- Validate operator status before syntax checks.
- If the server can't close a socket, it panics now.
- Quite enhanced logging :-)
- fixed KILL: you can kill yourself now without crashing the server;
QUIT isn't send to other servers after the KILL any more.
- renamed variables to fit new signal handler.
- moved call to NGIRCd_Rehash() to Conn_Handler().
- validate Conf_MaxConnections against FD_SETSIZE if available;
- fixed up some log messages and enhanced configuration validation.
- new constant RPL_YOURESERVICE_MSG, ERR_CHANNELISFULL_MSG, ERR_BADCHANNELKEY_MSG.
- fixed ERR_PASSWDMISMATCH_MSG.
- new constant MAX_SERVICES,
- added k and l modes to CHANMODES.
- fixed some parsing bugs.
- better logging.
- new file header format (in english);
- new file ident semantics.
- translated file header and comments to english;
- new file ident semantics.
- neue Befehle: Conn_StartTime(), Conn_SendQ(), Conn_RecvQ(), Conn_SendMsg(),
Conn_RecvMsg(), Conn_SendBytes[Zip](), Conn_RecvBytes[Zip]().
- beim Umschalten auf Kompression wurden evtl. bereits gelesene Daten nicht
entpackt, der Datenstrom war somit dann korrumpiert.
- neue Funktionen: Conn_SetOption(), Conn_UnsetOption(), Conn_Options().
- wenn mit zlib-Support: Conn_InitZip().
- volle Lesebuffer und Timeouts behandelt Conn_Handle() nun besser.
- Handle_Buffer() liefert nun ein Ergebnis.
- select() in Try_Write() hat falschen (keinen!) Timeout verwendet;
- der Timeout fuer das select() in Conn_Handler() ist nun TIME_RES (=2).
- RELOAD in REHASH umbenannt.
- neue Funktion WHOWAS.
- neue Meldungen: RPL_STATSLINKINFO, RPL_STATSCOMMANDS, RPL_ENDOFSTATS,
RPL_WHOWASUSER, RPL_ENDOFWHOWAS und ERR_WASNOSUCHNICK.
- Listen-Sockets werden ueber neue Funktion Conn_InitListeners() erzeugt.
- neue Funktion NGIRCd_Reload(). - Logging bei empfangenen Signalen verbessert. - SIGHUP ruft nun NGIRCd_Reload() auf.
- Befehle sortiert,
- neuer Befehl RELOAD.
- angenommene Socketes werden nun korrekt auf "non-blocking" gestellt;
- beim Senden und Empfangen wird EAGAIN ("Blockierung") nun abgefangen.
- unter HP-UX wird nun _XOPEN_SOURCE_EXTENDED definiert. Fuer den gcc
unter 11.11 ist dies erforderlich.
- Fehler-Handling von connect() gefixed: der Server kann sich nun auch
unter A/UX wieder zu anderen verbinden.
- in ServerUID und ServerGID kann nun jeweils auch der Name (und nicht nur
die numerische ID) verwendet werden.
- Neue Funktion Conn_SetServer().
- Einige assert()'s aufgeraumt.
- Connection-Strukturen werden nun "pool-weise" verwaltet; der Pool wird
bei Bedarf bis zu einem konfigurierten Limit vergroessert. - neue Funktionen Conn_First(), Conn_Next(), Conn_ClearFlags(), Conn_Flag() und Conn_SetFlag().
- ausgehende Verbindungen mit ID 0 konnten nicht aufgebaut werden ... :-/
- einige Debug-Ausgaben erweitert.
- Segfault unter hoher Netzaktivitaet behoben: in Conn_Close() wird die
Connection-Struktur nun frueher als "ungueltig" markiert. - besseres Error-Logging.
- Es wird nun laenger auf Resolver-Ergebnisse gewartet, der Login aber
sofort fortgesetzt, so ein Ergebnis eintrifft.
- "schneller Server-Reconnect" wird nun nur dann ausgefuehrt, wenn die
Verbindung zuvor "lange genug" aufgebaut war (z.B. also nicht mehr, wenn der Peer sofort beim Connect ein fatales ERROR liefert).
- Connection-Statistik implementiert.
- Server-NOTICEs haben nun ein "Text-Prefix".
- bei CVS-Versionen wird nun das Datum der letzten CVS-Aenderung angezeigt,
Versionsnummer entsprechend angepasst.
- es wird nun auch auf "sys/select.h" geprueft. U.a. fuer AIX notwendig. (tags/rel-0-5-0-pre1)
- Versionsnummer auf 0.5.0-pre1 angehoben.
- Admin-Info eingebaut (Variablen "AdminInfo1", "AdminInfo2" und "AdminEMail");
- Bug bei zu langem Operator-Name behoben.
- Test-Server wird in aktuelles Verzeichnis als "ngircd-TEST" verlinkt.
- die PID des Test-ngIRCd wird besser ermittelt.
- EXTRA_DIST ergaenzt, clean-Target erweitert.
- neues Script "stress-server.sh" integriert.
- Parameter von List_Add{Invited|Banned}() erweitert.
- neue Funktion Already_Registered(). - doppelte Ban- und Invite-Eintraege werden nun vermieden.
- Bans/Invites: andere Server wurden nicht informiert.
- neue Funktion Send_ListChange().
- neu: Check_List(), Check_List(), Lists_AddInvited(), Lists_DelInvited(), Lists_ShowInvites, Lists_AddBanned(), Lists_DelBanned(), Lists_ShowBanned und Lists_MakeMask().
- einige Bug-Fixes, bessere Debug-Meldungen.
- ein INVITE wird auch dann gespeichert (obwohl der Channel nicht +i ist), wenn der Client gebanned ist.
- den BAN-Befehl gibt es gar nicht ;-)
- Penalty-Delays gelten nun auch für Schreibvorgaenge.
- Conn_Handler() besser strukturiert ...
- Konfigurations-Uebersicht am Ende des configure-Lauf.
- neue Option "--disable-ircplus".
- IRC+-Protokoll ist nun abschaltbar.
- neue Konstante PROTOIRC.
- New_Chan() in Channel_Create() umbenannt; entsprechende Anpassungen.
- Neue Funktion Channel_SetModes().
- CLIENT-Struktur um Flags erweitert.
- neue Funktionen Client_SetFlags() und Client_Flags().
- neue Konfigurationsoption "OperCanUseMode" (Sektion "Global"):
ist sie aktiv, koennen IRC-Operatoren immer Channel-Modes setzen.
- an Clients wurden Modes mit fuehrendem ":" geliefert. Das ist zwar RFC-
konform (IMO), macht aber leider grosse(!!) Probleme :-/
- Bei einem JOIN in einen persistenten Channel werden nun evtl. zu setzende
User-Modes korrekt in den Channel gemeldet.
- neue Funktion Conn_SetPenalty() zum Setzen von sog. "Penalty Zeiten";
wird bisher nur beim Connect verwendet (eine Sekunde).
- Semantik der Validate_XXX()-Funktionen verbessert,
- Validate_Prefix() mit "Leben" erfuellt ;-)
- neue Konstanten fuer Invite- und Banlists: RPL_xxxLIST_MSG, RPL_ENDOFxxx_MSG
- neue Message ERR_UNKNOWNMODE_MSG.
- Flag "OnlyOnce" bei Lists_AddInvited() ergaenzt.
- Neue Funktion Lists_DeleteChannel().
- Invite-Lists weiter implementiert.
- Flag "OnlyOnce" bei Lists_AddInvited() ergaenzt. - Neue Funktion Lists_DeleteChannel().
- Besseres Logging, wenn malloc() fehl schlaegt.
- Ban- und Invite-Lists werden korrekt aufgeraeumt.
- Syntax von Conn_Handler() geaendert: kein Timeout mehr.
- Log-Meldungen bezueglich Server-Restart verbessert. - Timeout von select() auf eine Sekunde erhoeht.
- die "umask" des Servers wird nun auf 077 gesetzt;
- Hauptschleife geaendert.
- neue Funktionen Channel_Kick() und Channel_Quit();
- Channel_RemoveClient() ist entfallen.
- neue Funktionen Channel_Kick() und Channel_Quit();
- Channel_RemoveClient() ist entfallen. - Remove_Client() ueberarbeitet: nun mit Unterstuetzung fuer PART, QUIT und KICK.
- Anpassungen an pre-ANSI-Compiler,
- Includes aufgeraumt: Header includieren keine anderen mehr.
- POSIX Regular Expressions werden nun vorausgesetzt,
- Test auf snprintf und vsnprintf geaendert.
- neue Library "ngportab" begonnen: diese bildet Funktionen nach, die auf
dem Ziel-System nicht vorhanden sind -- wie z.B. vsnprintf().
- ngircd wird nun gegen die libngportab gelinkt, die evtl. benoetigte
und nicht auf dem System vorhandene Funktionen nachbildet.
- Count_MyServers() zaehlt nun wieder richtig, LUSERS sollte nun wieder die
korrekte Anzahl eigener Server-Links anzeigen.
- Format-String fuer Log-Meldung bei Nick-Aenderungen lokaler Clients
war corrupt, der Server stuerzte so in der Regel ab :-(
- Es wird nicht mehr anhand der Parameter-Anzahl, sondern des Token erkannt,
ob es sich beim SERVER-Befehl um ein- oder ausgehende Verbindungen handelt und somit die eigenen PASS- und SERVER-Befehle gesendet werden muessen.
- ausgehende, sich im Aufbau befindende Server-Links werden nun mit einem
speziellen Token (TOKEN_OUTBOUND) versehen, damit der Server sie spaeter als solche wieder erkennen kann.
- Manual-Pages heissen nun anders und werden auch nicht mehr "bereits
uebersetzt" installiert.
- Error-Log wird nach User-Wechsel mit Log_InitErrorfile() initialisiert.
- Einige Tippfehler korrigiert ...
- Conf_ListenPorts[] ist nun unsigned.
- Neue Konfigurations-Variablen Conf_UID und Conf_GID.
- das Error-File wird nun komplett durch das Log-Modul verwaltet, der
Dateiname enthaelt nun die PID: so koennen mehrere Instanzen laufen.
- neuer Kommandozeilen-Parameter "--configtest": gibt die verwendete Server-
Konfiguration aus. Diesbezuegliche Ausgaben bei "--help" sind entfallen.
- neue Funktion Conf_Test() zum Testen der Konfiguration.
- Conf_File ist entfallen, ist nun NGIRCd_ConfFile.
- alle Client_GetFromID() durch Client_Search() ersetzt.
- neuer Mode "s": Server Messages.
- alle Client_GetFromID() durch Client_Search() ersetzt.
- IRC_PRIVMSG() ruft nun intern Channel_Write() auf.
- Client_GetFromID() ist entfallen: Client_Search() benutzen!
- Client-Struktur um Hash-Wert ueber ID/Nick ergaenzt.
- Client_SetID() berechnet Hash-Wert ueber ID/Nick.
- Client_GetFromID() heisst nun Client_Search(), zudem wird via Hash gesucht. - Client_CheckNick() sucht nicht mehr selber. - altes Client_Search() ist entfallen (s.o.).
- Channel-Struktur um Hash-Wert ueber Namen ergaenzt.
- Neue Funktion Channel_Write().
- New_Chan() berechnet Hash-Werte ueber den Namen.
- Channel_Search() verwendet nun Hash-Werte. - Neue Funktion Channel_Write().
- externe portab-Header werden nicht mehr benoetigt/benutzt, dadurch
einige Aenderungen an diversen Source-Dateien und Headern. - Dateien enthalten keine CVS-History mehr.
- externe portab-Header werden nicht mehr benoetigt. Notwendige Teile sind
nun im ngIRCd-Source-Tree enthalten.
- ein sofortiger Re-Connect wird nur dann versucht, wenn die Vernindung
"lange genug" bereits bestanden hatte.
- IRC_PING() ist, wenn nicht im "strict RFC"-Mode, toleranter und akzptiert
beliebig viele Parameter: z.B. BitchX sendet soetwas.
- bei WHO, WHOIS und NAMES wird nun nur noch der Status "Operator" oder
"voiced" geliefert -- nicht mehr beides.
- die Pfade der Konfigurationsdatei, des MOTD und das Error-Files werden
nun aus den Vorgaben von configure ermittelt.
- die Beispiel-Konfigurationsdatei wird als ngircd.conf installiert,
wenn noch keine "echte" Konfigurationsdatei vorhanden ist.
- stderr wird nun in eine Datei umgelenkt (ngircd.err). Wenn der Server
nicht im Debug-Modus laeuft, so wird diese bei Programmende geloescht.
- Sourcen auf weitere Module fuer IRC-Befehle aufgesplitted.
- IRC-Befehl WHO implementiert.
- INSTALL um Hinweise auf portab.h etc. ergaenzt. (tags/rel-0-3-0)
- Timeouts ausgehender Verbindungen werden besser erkannt (z.B. unter Cygwin).
- Idle-Time der Hauptschleife [Conn_Handle()] erhoeht: weniger Last.
- Bei der USER-Registrierung wird NICK nicht mehr sofort geforwarded,
sondern erst dann, wenn auch ein gueltiges USER empfangen wurde.
- bei abgebrochene ausgehende Server-Verbindungen wird der naechste Ver-
bindungsversuch in RECONNECT_DELAY Sekunden (3) unternommen und nicht mehr "ConnectRetry" Sekunden gewartet.
- ausgehende Verbindungen werden nun asyncron connectiert und blockieren
nicht mehr den Server. Dadurch waren einige Aenderungen noetig. - diverse Log-Meldungen ueberarbeitet.
- gerade eben in SQUIT eingefuehrten Bug behoben: entfernte Server werden nun
nur noch geloescht, die Verbindung, von der SQUIT kam, bleibt wieder offen.
- einige unnoetige Client_NextHop()-Aufrufe entfernt.
- NAMES korrigiert und komplett implementiert.
- WHOIS wird nicht mehr automatisch an den "Original-Server" weiterge-
leitet: war eh nicht RFC-konform und machte Probleme mit Clients.
- es werden ein paar Funktionen mehr getestet: u.a. vsnprintf() und setsockopt().
- libUTIL wird eingebunden, so vorhanden (unter A/UX notwendig!)
- "Passive-Mode" implementiert: kein Auto-Conect zu anderen Servern.
- NGIRCd_DebugLevel wird (fuer VERSION-Befehl) ermittelt.
- User-Registrierung wird nicht mehr als Nick-Aenderung protokolliert,
- VERSION liefert nun doch wieder den Debug-Status im Reply.
- der Debug-Level wird bei VERSION nicht mehr geliefert. Grund: a) absolut
unnoetig und b) Compiler-Fehler, wenn ohne Debug-Code configure'd ;-))
- Version 0.2.1. (tags/rel-0-2-1)
- Tests auf netdb.h, stdlib.h, sys/wait.h, gethostbyaddr, gethostbyname,
strftime und die "libbe" unter BeOS (fuer syslog) ergaenzt.
- NICK-Aenderungen werden an alle Server und betroffene Clients gemeldet.
- Neue Funktion IRC_WriteStrRelatedPrefix().
- Version 0.2.0 (tags/rel-0-2-0)
- PONG an den Server selber wurde faelschlicherweise versucht zu forwarden.
- Channel-Modes wurden falsch geliefert (als User-Modes).
- PING und PONG werden nun auch korrekt an andere Server geforwarded.
- bei MODE-Meldungen wird der letzte Parameter nicht mehr mit ":" getrennt.
- Aenderungen und Anpassungen an Channel-Modes und Channel-User-Modes:
Modes werden besser geforwarded, lokale User, fuer die ein Channel angelegt wird, werden Channel-Operator, etc. pp. ... - NJOIN's von Servern werden nun korrekt an andere Server weitergeleitet.
- neue Funktionen Channel_ModeAdd(), Channel_ModeDel(), Channel_UserModes(),
Channel_UserModeAdd(), Channel_UserModeDel().
- neue Funktionen Channel_ModeAdd(), Channel_ModeDel(), Channel_UserModes(),
Channel_UserModeAdd(), Channel_UserModeDel(). - Modes in CL2CHAN-Struktur werden nun korrekt initialisiert.
- neue Funktion Channel_Modes() und Channel_IsValidName().
- Channel-Namen werden (besser) validiert.
- Version 0.0.1 (tags/rel-0-1-0)
- WHOIS zeigt nun auch die Channels an, in denen der jeweilige User Mitglied ist.
- zu jedem Server wird nun der "Top-Server" gespeichert, somit funktioniert LINKS wieder korrekt.
- nach einem JOIN wird die Liste der Mitglieder an den Client geschickt.
- MODE fuer Channels wird nun komplett ignoriert (keine Fehlermeldung mehr).
- IRC_WriteStrServersPrefixID() und IRC_WriteStrClientPrefixID() wieder entfernt.
- einige kleinere Fixes bezueglich Channels ...
- anderungen an den Funktions-Prototypen von IRC_WriteStrChannel() und
IRC_WriteStrChannelPrefix(), - neue: IRC_WriteStrClientPrefixID() und IRC_WriteStrServersPrefixID().
- neue Funktionen IRC_WriteStrChannelPrefix() und IRC_WriteStrChannel(),
die IRC_Write_xxx_Related() sind dafuer entfallen. - IRC_PRIVMSG() kann nun auch mit Channels als Ziel umgehen.
- CHANNEL- und CL2CHAN-Strukturen in Header verlegt,
- einige neue Funktionen (Channel_GetChannel(), Channel_FirstMember(), ...)
- Definition der CHANNEL-Struktur aus Header entfernt,
- neue Funktionen Channel_Join(), Channel_Part() und Channel_RemoveClient().
- neue Funktionen IRC_JOIN und IRC_PART begonnen, ebenso die Funktionen
IRC_WriteStrRelatedPrefix und IRC_WriteStrRelatedChannelPrefix(). - diverse Aenderungen im Zusammenhang mit Channels.
- neue Funktionen IRC_JOIN, IRC_PART, IRC_WriteStrRelatedPrefix und
IRC_WriteStrRelatedChannelPrefix().