Commit Graph

41 Commits

Author SHA1 Message Date
Přemysl Eric Janouch a87be6dfd2 Fix two Clang static analyzer issues
Overflowing memory allocations should crash or exit anyway.
2014-07-19 22:35:12 +02:00
Přemysl Eric Janouch 027333e56a Fix some compiler warnings
`-Weverything' seems to have found a few problems.

Also enabled clang sanitizers by default.
2014-07-19 17:44:49 +02:00
Přemysl Eric Janouch 43d34d2473 Add a LIST_HEADER macro
To save us from specifying the `next' and `prev' pointers all the time.

It's not perfect, just a tiny bit better.
2014-07-18 19:51:15 +02:00
Přemysl Eric Janouch 353230b18b Cleanup 2014-07-18 01:03:21 +02:00
Přemysl Eric Janouch b2a4d38e8c Implement TIME, VERSION, MOTD, LUSERS 2014-07-17 23:51:34 +02:00
Přemysl Eric Janouch 86e3ae951e Fix the ERR_NOTREGISTERED message 2014-07-17 23:48:38 +02:00
Přemysl Eric Janouch 057a01e2e5 Send LUSERS output upon registration 2014-07-17 23:48:38 +02:00
Přemysl Eric Janouch 081b9f6bd2 Fix handling of multiple NICK's before a USER
We have to release the old nickname _first_, so that we can register the
same one again (albeit with a slight race condition).
2014-07-17 23:48:38 +02:00
Přemysl Eric Janouch b1780e3efb Send the user's mode after registration 2014-07-17 23:48:38 +02:00
Přemysl Eric Janouch 531b1c71bf Return `struct error' from irc_initialize_ssl() 2014-07-17 08:43:21 +02:00
Přemysl Eric Janouch a508f85bea Implement daemonization
Now we're a real daemon, yay.
2014-07-16 23:56:42 +02:00
Přemysl Eric Janouch 1842fa90dd Revise usage of print_{error,fatal}()
Let's limit print_fatal() to unexpected conditions.

Also added exit_fatal() to save a few lines of code.
2014-07-16 23:56:42 +02:00
Přemysl Eric Janouch e00d2079b5 Only print the first OpenSSL error
Otherwise TLS autodetection and TLS communication itself seem to work, yay!
2014-07-16 23:56:09 +02:00
Přemysl Eric Janouch d28b722489 str_map::key_cmp -> str_map::key_xfrm
It seemed to be almost too easy to be true, and it actually was.

Now it should work.
2014-07-16 21:23:30 +02:00
Přemysl Eric Janouch 996e0912c2 First bugfixes
Now we can at least successfully register.
2014-07-16 00:57:55 +02:00
Přemysl Eric Janouch c419946729 Cleanup
No functional changes.
2014-07-16 00:54:23 +02:00
Přemysl Eric Janouch 2921eed702 Rip out error codes
As it turns out, they're rather annoying to maintain, and we don't even need
them.  They also clutter the code unnecessarily in their current form.

If it ever comes to having to have them, let's make another version of
error_set(), maybe error_set_with_code(), that makes it possible to also set
an integer within `struct error'.

The only problem with the above solution is when we aggregate errors from
multiple functions (be it by calling one after another, or through nesting of
functions that may return an error).

But let's care about that when the time comes for it.
2014-07-16 00:53:59 +02:00
Přemysl Eric Janouch a2a979ea2e Make it possible to route messages to syslog 2014-07-15 22:23:53 +02:00
Přemysl Eric Janouch 18cb2941f3 Resolve paths relative to XDG config. paths
This should make the programs an awful lot less painful to set up.
2014-07-14 22:15:56 +02:00
Přemysl Eric Janouch b0cf09fb4c Rename `struct connection' to `struct client'
It is shorter and makes more sense.  Also replaced "conn" with "c"
to keep it even more concise, and thus clearer.
2014-07-14 22:15:56 +02:00
Přemysl Eric Janouch b58ee27362 Implement client registration
And shuffle around some functions so that they form logical blocks (at least
I've tried; it's not that easy when you try to avoid forward declarations).
2014-07-14 02:38:56 +02:00
Přemysl Eric Janouch c7cd0c40e0 Add support for custom str_map key comp. fun.
That wasn't hard.
2014-07-14 02:06:02 +02:00
Přemysl Eric Janouch 3206c86430 Don't forget that channels have users 2014-07-14 00:36:16 +02:00
Přemysl Eric Janouch d40d34b4ca Miscellaneous little things 2014-07-14 00:14:37 +02:00
Přemysl Eric Janouch 586ccd4e87 Put a prolog at the top of configuration files
Later I'm going to put in there some more information about the format etc.
2014-07-13 23:50:44 +02:00
Přemysl Eric Janouch f52fab9448 Load X/Open message catalogs
This is going to enable making changes to ERR and RPL messages without
modifying the source code.

Localized messages could be interesting. :)
2014-07-13 23:47:29 +02:00
Přemysl Eric Janouch aaedbf93f1 Load an MOTD on start 2014-07-13 21:27:38 +02:00
Přemysl Eric Janouch 03ec980f26 Add a strtoul() wrapper 2014-07-13 05:56:30 +02:00
Přemysl Eric Janouch 51909edc76 Apparently it's the "realname" 2014-07-13 05:38:05 +02:00
Přemysl Eric Janouch ab651284a2 Initialize the server name 2014-07-13 05:05:01 +02:00
Přemysl Eric Janouch 475c83618a Only compile regex's once 2014-07-13 04:30:23 +02:00
Přemysl Eric Janouch 4904128c98 Add a few token validation functions 2014-07-13 03:26:33 +02:00
Přemysl Eric Janouch ccb2e4006d Implement irc_try_write() 2014-07-12 23:17:38 +02:00
Přemysl Eric Janouch 5ad2781681 Rename connection_abort() to connection_kill() 2014-07-12 23:17:38 +02:00
Přemysl Eric Janouch 93450332fe Implement irc_try_read() 2014-07-12 23:17:38 +02:00
Přemysl Eric Janouch 13d3299816 Fix connection abortion 2014-07-12 22:54:35 +02:00
Přemysl Eric Janouch cdaab8fdf0 Move `SSL_CTX *' into `struct server_context'
It didn't make much sense to parse the configuration values and load the SSL
keys on each connection.
2014-07-12 22:00:54 +02:00
Přemysl Eric Janouch 0cb51320d6 Implement an iterator for `struct str_map' 2014-07-12 21:19:44 +02:00
Přemysl Eric Janouch 1edcbc5f3d Implement parsing of IRC 3.2 message tags
It's still in the making and we don't use it, but let's not fail on it if e.g.
a plugin decides to enable it.
2014-07-12 21:17:22 +02:00
Přemysl Eric Janouch 705c0e943e WIP: add a stub IRC daemon named `kike'
As it is going to share a great lot of functionality with ZyklonB, I have
decided to extract the common parts into `common.c' and make the two subprojects
include this file.

The Single Compile Unit concept has proven valuable (sub-second compile times,
dead code warnings, almost no need for function declarations, whole-program
optimizations), and the sources aren't that long so far anyway.

I am probably going to add CMake support later but so far it's not a priority.
This project is meant to be portable and freely relocatable (ie. no hardcoded
paths if I can avoid it).
2014-07-12 21:09:50 +02:00
Přemysl Eric Janouch 165a19da21 Initial commit 2014-07-05 01:28:16 +02:00