This wasn't done before, because optimizing stuff can always introduce nice new issues. But is kinda necessary now since the previous way was very inefficient. This now builds all the necessary buffers for multiline clients and for non-multiline clients. And then iterates through both types of clients, sending what they need. Instead of doing it the other way around. I had the dillema to either expose the linecache API and have everything in multiline.c. Or, i do not expose linecache, and we do everything in send.c. The downside of the latter is that if there is mistake then we can't simply reload (or unload) the module to solve it. So, I have chosen to expose the linecache API (sure, less clean) since that leaves us with options if we screw up, plus it means everything related to multiline sending is nicely in multiline.c, which is i guess just as good as an argument as well ;)
About UnrealIRCd
UnrealIRCd is an Open Source IRC Server, serving thousands of networks since 1999. It runs on Linux, OS X and Windows and is currently the most widely deployed IRCd with a market share of 37%. UnrealIRCd is a highly advanced IRCd with a strong focus on modularity and security. It uses an advanced and highly configurable configuration file. Other key features include: full IRCv3 support, SSL/TLS, cloaking, JSON-RPC, advanced anti-flood and anti-spam systems, GeoIP, remote includes, and lots of other features. We are also particularly proud on our extensive online documentation.
Versions
- UnrealIRCd 6 is the stable series since December 2021. It is the only supported version.
- For full details of release scheduling and EOL dates, see UnrealIRCd releases on the wiki
How to get started
Follow the installation guide on the wiki. See:
Documentation and Support
You can find all documentation online at: https://www.unrealircd.org/docs/
We also have a good FAQ: https://www.unrealircd.org/docs/FAQ
If you are in need of support, you can pop up on #unreal-support on irc.unrealircd.org
or ask your question on the forums.
Supported systems
We try to support all major *NIX systems: all Linux distros but also NetBSD, OpenBSD and macOS, provided the OS version was released within the past ~5 years.
We use a private BuildBot instance to test each commit. The tested systems are (others are likely to work too):
- Linux: Debian (10, 11, 12, 13), Ubuntu (18.04, 20.04, 22.04, 24.04, 26.04)
- FreeBSD: 15
- Windows: Visual Studio 2019
UnrealIRCd is architecture-agnostic. Most of the BuildBot workers run on x64 but we also have some on x86 and arm64 to ensure these work as well.
Other links
- https://www.unrealircd.org - Main website
- https://bugs.unrealircd.org - Bug tracker
- https://fosstodon.org/@unrealircd - Mastodon
- https://twitter.com/Unreal_IRCd - Twitter