FAQ

For UnrealIRCd version 3.2.x see Frequently Asked Questions (FAQ).

For UnrealIRCd version 3.4.x see below:

= Releases =

What is the current version and when will next version be released?
The latest Stable version is 3.2.10.4 which was released on July 26, 2014. This is a minor update to previous version of the 3.2.10.x series. There is no ETA for a next 3.2.x release.

The latest Development version is 3.4-alpha4 which was released on June 27, 2015. The 3.4.x series will have frequent releases (about once a month). Soon the 3.4.x will move from alpha stage to beta, in order to get a 3.4.x stable release in the end of 2015.

What is new in the latest version?
Please check out the releases announcements on the forums.

How is this different than a regular download?
Below we describe how to get the very latest code from our git repository. This contains code changes committed only minutes or days ago and is considered 'bleeding edge'. Possibly nobody has tested this code, or just one person. It may not even compile. Most people use the Downloads instead as they would have received some testing (or minimal testing in case of 3.4.x) A word of caution... Note that in addition of the warning of above, 3.4.x is also in early development. Therefore the IRCd may crash from time to time, so use it at your own risk (and be sure to read the release notes). That being said, you'll help us a lot by trying out the latest development versions and reporting bugs on our bug tracker. Just don't run it as a production server ;).

GitHub
Previously we used a different source control system. Now we have moved to git and we have our own page at GitHub. You can also easily see the most recent activity there, just like before.

Option #1: I'm lazy, I just want a .tar.gz or zip!
Go to our GitHub page and on the right click on 'Download ZIP'.

Option #2: The 'real way' to get the latest source...
This describes how to 'checkout' the repository on your machine, which allows you to easily pull in updates (which happen every day/week). First, run:

git clone https://github.com/unrealircd/unrealircd.git

This will create a directory 'unrealircd' with all the source code (3.4.x by default, see later). If, after a few days, you want to pull in the latest changes then run the following in your unrealircd directory:

git pull -u

3.2.x or 3.4.x?
By default you will see the 3.4.x development branch called 'unreal34'. If you want to see the 3.2.x branch then type 'git checkout master' in the 'unreal' directory. You can later switch back to 3.4.x by typing 'git checkout unreal34'

git: command not found
If you get something like git: command not found then you need to install git, the package is usually also called 'git'.

= Getting started =

How to compile and install UnrealIRCd
Check out the Installing from source or Installing (Windows) articles.

= Compile/build problems =

I ran ./configure and got tons of problems
Do NOT use ./configure! Use ./Config instead.

make: *** No targets specified and no makefile found. Stop.
First of all, did you run ./Config? (You sould not use ./configure)

The error means no makefile was produced, this means something went wrong when running ./Config, take a look at the output (last 20-30 lines). Maybe you don't have a C compiler, are missing some library, or (less likely) you are compiling on an unsupported OS.

(v)fork: Resource temporarily unavailable
You are trying to compile you ircd on a nice shell and your sysadmin has set your process limit too low.

Explain the problem to your system administrator: say you are unable to compile because of the process limit, and paste the error to him/her.

make: don't know how to make w. Stop
Do not use 'gmake', use 'make' instead (as ./Config said when it finished).

Windows: unresolved external symbol ..
NOTE: We highly suggest you to simply download the Windows precompiled version from unrealircd.com instead of compiling your own (unless you need to).

This error can mean a number of things, but if you see unresolved symbols in non-windows functions, such as: Creating library L_COMMANDS.lib and object L_COMMANDS.exp M_OPER.obj : error LNK2019: unresolved external symbol _sendto_snomask_global re ferenced in function _m_oper M_INVITE.obj : error LNK2001: unresolved external symbol _sendto_snomask_global src/modules/commands.dll : fatal error LNK1120: 1 unresolved externals NMAKE : fatal error U1077: 'cl' : return code '0x2' Stop.

Then this is because the wircd.def file is not up to date with your compile settings. Fixing this is simple, you need to download dlltool.exe and place it in your path (eg: c:\windows\system32). Then, for compiling you use something like this: nmake -f makefile.win32 [your other options here] nmake -f makefile.win32 SYMBOLFILE nmake -f makefile.win32 [your other options here] So basically you just run nmake -f makefile.win32 SYMBOLFILE and then restart compiling again.

If that didn't help, then this is a different problem (eg: old compiler, too new compiler, invalid compile environment, etc).

Compiling - Windows: I'm unable to compile UnrealIRCd on windows
NOTE: We highly suggest you to simply download the Windows precompiled version from unrealircd.com instead of compiling your own (unless you need to).

Read doc/compiling_win32.txt to see what you need and how to compile. (TODO: this will be wiki'fied)

= Getting UnrealIRCd up and running = The questions below answer problems with getting UnrealIRCd booted.

Windows: It doesn't start?? nothing happens!
If you start UnrealIRCd and nothing happens, you see nothing, then you are probably running UnrealIRCd as a service. This means you checked 'install as a service' during the installer. When UnrealIRCd is running as a service you won't see a graphical interface (GUI). The GUI can be quite useful, especially when you're setting up UnrealIRCd for the first time. That's why we don't recommend installing as a service and the option is called "install as a service (not for beginners!)".

Switch from service mode to GUI mode
Go to the "C:\Program Files (x86)\Unreal3.4" directory and run the command "unreal uninstall". This won't uninstall UnrealIRCd itself, but will uninstall the service.

Then next time you try to start UnrealIRCd (run wircd.exe) you will see the GUI, which is much more helpful.

If you want to run in services mode again, then run "unreal install".

I still want to run as a service
If you run UnrealIRCd as a service then errors are logged to 'service.log', which may or may not be in the 'logs' subdirectory.

Where are errors logged?
Errors are normally logged to the file ircd.log in the logs subdirectory.

If you run UnrealIRCd "as a service" on Windows rather than in GUI mode then the errors are logged to service.log instead. Note that you may want to (temporarily) switch from service to GUI mode, see.

set:: missing
You didn't set a required variable in your set block. See the Set block for documentation on the specific variable.

{ } block missing
Your configfile doesn't contain a required block, please check the documentation on the block.

Unknown directive
Several possibilities: admin { "Blah"; "Blahblah"; }; If you forget a ; or a }; it won't work!
 * you have a unknown/misspelled variable name.
 * you forgot to load a module
 * you are using an older unreal version (note that the online documentation is about the 3.4.x development version so it may contain features not yet available in the current release).
 * you have put the setting in the wrong place, for example set::options::dont-resolve means set { options { dont-resolve; }; };.
 * you have a parse error in your config file. For example, the admin block should be something like:

See Configuration for an explanation on the syntax and to learn what is valid and what isn't. It's just one page.

illegal something::class / unknown class 'something'
You are referring to a class which you didn't declare.

You refer from allow/oper/server blocks to class blocks so the class blocks should be defined before you refer to them. So the order is important.

The OS enforces a limit on max open files
If you get: The OS enforces a limit on max open files Hard Limit: 512 MAXCONNECTIONS: 1024 Fix MAXCONNECTIONS or something similar, then your OS is limiting your maximum number of open files/sockets... You need to rerun ./Config and answer the number showed in "Hard Limit" (512 in this example) to the question "How many file descriptors (or sockets) can the IRCd use?", and after that recompile: make clean; make; make install

Error binding stream socket to .. Address already in use
This means the IRCd cannot listen on the port(s) you specified. Here are the two (most common) possibilities:

Another process is using the port
An IRCd process is already running on the same port(s).

Solution: simply kill the old IRCd before you try to launch UnrealIRCd (or make one of them use a different port)

You are on a shell box
When you use a shell provider you normally need to 'bind' to a a specific IP which the shell provider assigned to you. So if you have: listen        *:6667; Then change that to: listen        1.2.3.4:6667;

Where 1.2.3.4 is the IP you received from your shell provider. You will have to do this for ALL your listen blocks.

See also the documentation of the Listen block.

UnrealIRCd seems to start but the screen goes away
Check, look at the error, and proceed from there.

UnrealIRCd starts fine but I get Connection refused
Is it really running? Do you see an 'unrealircd' process on *NIX or 'wircd' or 'unreal' process on Windows ?

Check also to see if there are no errors.

If that is all fine (so UnrealIRCd is really running) then check out

loadmodule ....: undefined symbol ....
If you get undefined symbol errors such as: * unrealircd.conf:52: loadmodule src/modules/commands.so: failed to load: tmp/F73A8A80.commands.so: Undefined symbol "ssl_get_cipher"

Then most likely you did not upgrade or (re)compile UnrealIRCd properly. Do the following: make clean ./Config make make install

And try booting UnrealIRcd again.

Reasons why it might not have worked:
 * Perhaps you forgot 1 of the steps of above
 * Make sure your irc is installed in the path you think it is. Double check the paths you see / entered.
 * Possibly you have some old .so files from previous versions that you are trying to load. Check the file date/time to ensure they are really just compiled a few minutes ago.

If all of the above didn't work then you could just as easily try a clean UnrealIRCd installation. rm -rf or rename your current one, extract a fresh .tar.gz and configure&compile it.

= Linking servers =

How do I link two (or more) IRC servers
Have a look at our Tutorial: Linking servers.

Trouble with linking two IRC servers
Have a look at our dedicated Troubleshooting: linking servers article.

(sync) Possible negative TS split at link server.blah.net (1078875430 - 1078875478 = -48)
If you get an error like: (sync) Possible negative TS split at link server.blah.net (1078875430 - 1078875478 = -48) then this -48 means one of the clock is 48 seconds behind the other. This is bad.

See

Your clock is .. seconds behind my clock. Please verify both your clock and mine, fix it and try linking again.
See

Your clock is .. seconds ahead of my clock. Please verify both your clock and mine, fix it, and try linking again.
See

Why correct time is important and how to fix your clock
It is very important on IRC to have a perfectly synchronized clock. Below we explain why, and present a few solutions on how to ensure your clock is always correct.

Why correct time is important
As said, correct time is important. This is even more important when you link servers. If the clocks of your servers are off by more than a 5 seconds then you may experience problems already. If they are off for more than 30 seconds then you have a serious problem. In fact, we don't allow linking two servers when their clocks are more than 30 seconds off.

We really use timestamps in IRC everywhere. So incorrect time will cause quite a number of issues:
 * Temporary KLINES/GLINES/SHUNS/etc will not expire correctly. They might expire like an hour earlier, or even directly when they are added, or later.
 * Sudden (wrong) nick collision kills. Incorrect time can be exploited by someone to kill of other users (thus incorrect time is a security problem as well!)
 * Channels might not show up in /LIST (especially if time is more than a day off)
 * Services might be unable to set a user +r (+r = register user)
 * In /WHOIS it may look like someone 'signed on' at the wrong time, even in the future

Windows
Windows 7 and up should automatically synchronize the clock. If it isn't working, then just search the web on how to do this.

*NIX
On Linux/*BSD/etc you can get your clock perfectly synchronized by running ntpd. To install this you need root access on the machine.

On Linux distro's you simply run: apt-get install ntp Or: yum install ntp

Solution 2: built-in time synchronization in UnrealIRCd
UnrealIRCd has build-in NTP support and will try to synchronize the clock when it boots and then maintain an internal offset. This will make time appear correct (for the IRCd). Unfortunately this does not help against 'clock drift' where the time offset will change, for example if your clock is too slow it may be off by 2 seconds on the first day.. 4 seconds on the 2nd day.. and so on. The solution from previous section is therefore better.

A word on when your servers are in (different) time zones
It is absolutely no problem for your servers to be in different time zones. In fact, this is a common situation. On IRC we always use GMT/UTC time for all timestamps internally.

What is important is that both your time AND YOUR TIME ZONE are set correctly. You can see which timezone your server is using by running the date command. It shows something like: Sun Jun 28 14:36:21 CEST 2015, in this example CEST is the time zone.

Example of incorrect clock caused by a bad time zone
Say, you are sitting next to your server and you are (both) in the Eastern Time zone. The wall clock says it's 11:00am and your server also shows 11:00am. Good, right? However, by mistake, your server is actually configured to use Central Time (oops!). This means the clock is actually incorrect, the UTC clock will be 1 hour off!