Commit Graph

133 Commits

Author SHA1 Message Date
Simon Ser c22ce793a1
Allow clients to specify an upstream name in their username 2020-03-04 15:44:13 +01:00
Simon Ser c366b5320c
Retry connecting to upstream servers
Rate-limit retries in case connecting immediately fails.
2020-03-03 15:26:19 +01:00
Simon Ser 1141698a92
Enable TCP keep-alive on all connections 2020-02-18 17:26:17 +01:00
Simon Ser 8997a70acb
Don't leave connections half-opened 2020-02-18 16:54:06 +01:00
Simon Ser 286fb4b18c
Add a -debug flag 2020-02-18 16:31:18 +01:00
Simon Ser 9a93c56cdf
Fix issues related to Ring
- RingConsumer is now used directly in the goroutine responsible for
  writing downstream messages. This allows the ring buffer not to be
  consumed on write error.
- RingConsumer now has a channel attached. This allows PRIVMSG messages
  to always use RingConsumer, instead of also directly pushing messages
  to all downstream connections.
- Multiple clients with the same history name are now supported.
- Ring is now protected by a mutex
2020-02-17 15:46:29 +01:00
Simon Ser fad9d820c1
Add an in-memory ring buffer
References: https://todo.sr.ht/~emersion/jounce/2
2020-02-07 16:43:54 +01:00
Simon Ser 69a35069ef
Handle downstream PART messages 2020-02-07 13:36:32 +01:00
Simon Ser 4de405d3b2
Handle downstream MODE messages 2020-02-07 13:08:27 +01:00
Simon Ser e17c0b3aca
Add upstreamConn.register 2020-02-07 12:37:44 +01:00
Simon Ser 50fc19c92f
Skip unregistered and closed upstream connections 2020-02-07 12:02:19 +01:00
Simon Ser 636ede13da
Add user.forEachDownstream 2020-02-07 11:56:36 +01:00
Simon Ser 059a799d16
Add user.forEachUpstream 2020-02-07 11:46:44 +01:00
Simon Ser 3586ca3d26
Add Server.getUser 2020-02-07 11:39:56 +01:00
Simon Ser 3b2bb58c60
Per-user connections 2020-02-07 11:36:42 +01:00
Simon Ser 3b0639bacc
Keep track of upstream connections in a list 2020-02-06 22:25:32 +01:00
Simon Ser 5988d10a0b
Remove downstream conn from list on disconnect 2020-02-06 21:30:44 +01:00
Simon Ser 36c404c50c
Allow Server to have access to upstreamConn 2020-02-06 21:20:22 +01:00
Simon Ser 8bbba42aef
Maintain a list of downstream connections 2020-02-06 21:11:35 +01:00
Simon Ser 726d7cb54b
Add per-upstream logger 2020-02-06 20:26:03 +01:00
Simon Ser ae7f162883
Join channels on upstream servers 2020-02-06 19:22:04 +01:00
Simon Ser b5f3bad588
Split downstram and upstream code into separate files 2020-02-06 16:18:19 +01:00
Simon Ser a2d9a64bed
Log upstream server errors 2020-02-06 16:13:29 +01:00
Simon Ser c14e26769f
Add basic upstream message handler 2020-02-06 16:11:28 +01:00
Simon Ser 56d793543e
Connect to upstream servers 2020-02-06 16:03:07 +01:00
Simon Ser 06cd1ce44f
Add Server.Logger 2020-02-06 15:50:46 +01:00
Simon Ser 003ce38bf8
Rename conn to downstreamConn 2020-02-06 15:22:26 +01:00
Simon Ser 3ccc1bb4e8
Handle PING 2020-02-06 12:18:37 +01:00
Simon Ser f8a03a25df
Send ERR_NOMOTD on registration 2020-02-06 12:08:54 +01:00
Simon Ser 5547eb7290
Add connection registration 2020-02-04 18:56:07 +01:00
Simon Ser 23ca41b435
Handle NICK and USER 2020-02-04 12:19:18 +01:00
Simon Ser 6d4581a6d0
Send "unknown command" replies 2020-02-04 11:25:53 +01:00
Simon Ser 8e31fde0ab
Add basic IRC listener 2020-02-04 10:46:22 +01:00