.Dd November 10, 2019
.Dt README 7
.Os "Causal Agency"
.Nd IRC pouncer :3
is a multi-client, TLS-only IRC bouncer.
It takes a simple approach,
using a multiple-consumer ring buffer
and the IRCv3.2
extension to communicate with clients.
.Pq Fl ltls
It can also be built
on Darwin or GNU/Linux
by copying the appropriate file to
and modifying as needed.
processes are sandboxed with
.Xr capsicum 4 .
On other systems,
who knows what might happen?
As a former
.Xr znc 1
I was dissatisfied with the multi-client experience it offered.
I wanted to connect from both my laptop and my phone
and have full chat history on both.
.Xr znc 1 ,
my options were either having both clients
spammed with redundant history every time they connect,
or having one client consume the buffer
and the other get no history at all.
With a multiple-consumer ring buffer,
each client has its own place in the history
and can be brought up to date independently.
by expecting clients to implement the
all events can be accurately replayed,
rather than being limited to messages.
.Bl -tag -width "dispatch.c" -compact
.It Pa bounce.h
declarations and common functions
.It Pa bounce.c
configuration and event loop
.It Pa local.c
local server binding
.It Pa server.c
remote server connection
.It Pa client.c
remote client connections
.It Pa state.c
state shared between clients
.It Pa ring.c
buffer between server and clients
.It Pa config.c
.Xr getopt_long 3 Ns -integrated
.It Pa dispatch.c
SNI socket dispatch
.It Pa compat.h
compatibility with lesser operating systems
.It Pa rc.d/
.Xr rc 8
.Sh SEE ALSO
.Xr calico 1 ,
.Xr pounce 1