soju forked to be LESS SHIT
Go to file
Chris Smith c607fd5a58 Set a higher timeout for proxyproto listeners
go-proxyproto added support for a read timeout in 0.6.0[1] and
defaulted it to 200ms. After this time if no data is read on
the socket, it is closed.

This is _really_ low if the underlying connection is a TLS
one as no data pops out the other end until the handshake is
done. It effectively limits you to TLS connections within
a 50ms RTT of your bouncer with clients that are fast enough
at responding.

It appears that HexChat on Arch is somehow slow enough at
TLS connections thant it consistently takes longer than
200ms even over localhost, meaning it outright can't connect
to soju any longer.

To make this a lot less painful, have soju pass in a read
timeout of 5 seconds. This feels like a reasonable tradeoff
between keeping (possibly malicious) connections open and
accepting the realities of network connections.

[1]: https://github.com/pires/go-proxyproto/issues/65
2021-09-19 17:00:40 +02:00
cmd Set a higher timeout for proxyproto listeners 2021-09-19 17:00:40 +02:00
config Make db and log config options more future-proof 2021-04-21 18:15:04 +02:00
contrib contrib/clients: sort alphabetically and wrap lines 2021-07-07 10:37:18 +02:00
doc service: Introduce network quote 2021-07-07 10:34:46 +02:00
.build.yml ci: add gofmt check 2021-06-29 22:24:44 +02:00
.editorconfig Add .editorconfig 2020-11-30 11:39:41 +01:00
.gitignore doc: document "network delete" 2020-04-01 17:38:09 +02:00
bridge.go Implement casemapping 2021-03-24 18:15:52 +01:00
config.in Make db and log config options more future-proof 2021-04-21 18:15:04 +02:00
conn.go Silence net.ErrClosed errors 2021-05-20 00:07:44 +02:00
db_sqlite.go Use NULL-tolerant comparison for DeliveryReceipts 2021-09-14 18:38:58 +02:00
db.go Add per-user realname setting 2021-06-25 20:33:13 +02:00
downstream.go Allow CAP negotiation to happen with CAP REQ 2021-09-19 16:50:47 +02:00
go.mod Upgrade dependencies 2021-09-13 14:23:33 +02:00
go.sum Upgrade dependencies 2021-09-13 14:23:33 +02:00
ident.go ident: remove leftover debug log 2020-08-18 17:57:12 +02:00
irc.go Implement CHATHISTORY BETWEEN 2021-05-18 10:44:10 +02:00
LICENSE Switch license to AGPLv3 2020-02-07 17:41:51 +01:00
Makefile Don't build soju when calling "make install" 2021-05-25 16:31:06 +02:00
msgstore_fs.go msgstore_fs: escape "." and ".." 2021-09-19 16:55:12 +02:00
msgstore_memory.go Check message stores implement expected interfaces 2021-05-18 14:19:34 +02:00
msgstore.go Implement CHATHISTORY TARGETS 2021-06-02 20:32:11 +02:00
net_go113.go go fmt: add go:build tags 2021-09-09 10:07:37 +02:00
net_go116.go go fmt: add go:build tags 2021-09-09 10:07:37 +02:00
README.md Add a C compiler to the list of dependencies 2021-07-07 10:32:16 +02:00
server.go Allow admins to broadcast message to all bouncer users 2021-06-23 19:23:09 +02:00
service_test.go Hand-made word splitter for BouncerServ 2021-06-24 19:33:46 +02:00
service.go service: Introduce network quote 2021-07-07 10:34:46 +02:00
upstream.go Add per-user realname setting 2021-06-25 20:33:13 +02:00
user.go Don't send network notification when removed 2021-09-13 10:33:46 +02:00

soju

builds.sr.ht status

A user-friendly IRC bouncer.

  • Multi-user
  • Support multiple clients for a single user, with proper backlog synchronization
  • Support connecting to multiple upstream servers via a single IRC connection to the bouncer

Usage

Building and installing

Dependencies:

  • Go
  • a C89 compiler (for SQLite)
  • scdoc (optional, for man pages)

For end users, a Makefile is provided:

make
sudo make install

For development, you can use go run ./cmd/soju as usual.

Contributing

Send patches on the mailing list or on GitHub, report bugs on the issue tracker. Discuss in #soju on Libera Chat.

License

AGPLv3, see LICENSE.

Copyright (C) 2020 The soju Contributors