Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bouncer networks #730

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft

Bouncer networks #730

wants to merge 2 commits into from

Conversation

4e554c4c
Copy link
Contributor

Currently creating a draft issue until #724 is merged and we discuss a bit about the implementation and tradeoffs.

This commit includes various fixes that I have found working on
bouncer-networks. It includes several performance benefits—such as
changing `Server` to be an `Arc<str>` which removes much of the copying
overhead. I have also made sure that there is only one copy of the
server config in the `Halloy` struct, which was previously duplicated
for seemingly no reason.
Still, several performance issues go un-addressed. such as the
duplication of server configs between threads (should this also be an
`Arc<config>`?) and the copying of `client` structs.

I have also made some changes to the client. The capability negotiation
process has been streamlined, and I've eliminated some branching with
preference toward pattern matching. I've also fixed a slight error with
halloy, making sure that it detects the end of registration correctly
(matching other clients).

I have also made changes to the `Cargo.toml` in the `data` crate. This
is to fix some compilation issues when building that crate in isolation.
I would like this fixed so that it'd be easier to run `data` crate tests
in isolation.
Ideally I think that each of the sub-crates should be tested
individually in CI—but that's out of scope for this PR.

In my opinion, this resolves squidowl#640
This commit allows for specifying a single network for a bouncer, which
will be queried for all other bounced networks. There should be no
change for servers and bouncers which do not implement the bouncer
network specification.

`soju.im/bouncer-networks` requires that SASL be enabled, so a precursor
for this being widely rolled out is squidowl#624.

Resolves squidowl#77
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant