Unix sockets provide better security and performance, so it is natural
for electrs to want to support them. Because of how similar they are to
TCP sockets the required changes are theoretically small. However, there
is no crate I know of that provided the abstract API, so I made one.
I originally only wanted to support electrum RPC but it turns out not
having to deal with two sets of `SocketAddr` is easier and it wasn't too
difficult. Unix socket was already supported by `tiny_http` via their
own abstraction and we have no other dependencies requiring TCP.
Because this also required modifying the logic around publishing the
electrum address I added an option to set it explicitly regardless of
whether the user is dealing with Unix or TCP socket because having this
is useful for TCP too - the user might want to publish a different port
number if the port was mapped via NAT or a different address when
tunnelled. In theory, this is still not perfect because the same server
could be tunnelled multiple times but we don't bother with such edge
case until someone requires it.
Another side improvement is reporting if the accept thread ends because
of incoming stream ending rather than error. This should never happen
but is useful for debugging if it ever does.
There's no point in limiting this option to signet only. Allowing this
flag to be set outside of signet networks lets electrs be used for
custom testing networks that aren't signets.
Hi,
Noticed two grammatical issues here:
First; "Please note that it allows to set per-module filters, but module naming is considered unstable."
corrected to "Please note that it allows setting per-module filters, but module naming is considered unstable."
(Changed "allows to set" to "allows setting" for proper grammar),
Second; "If a new version of electrs is not yet in the package system, try wait a few days or contact the maintainers of the packages if it's been a long time."
Changed as "If a new version of electrs is not yet in the package system, try waiting a few days or contact the maintainers if it has been a long time."
(Changed "try wait" to "try waiting" and "it's" to "it has" for proper grammar).
Thanks.
Previously it was not clear from the documentation that configuration files are optional or why non-not-exist errors are hard errors. This change adds the information about these important properties of config files to the documentation.
The `--skip-default-conf-files` flag is often desired but people may miss it because it's not in the doc, so this documents it.
Further, to avoid problems with people missing flags this adds a recommendation to run `electrs --help` so if we ever forget to update the doc people will learn about the new arguments anyway.
Following #962.
People seeing Nginx config may falsely assume electrs uses HTTP but it's not the case.
Putting heads up about this may avoid future confusion.
Closes#813
Removing/renaming unsupported switches was not called out explicitly and it's possible that someone is using a different bitcoind address, not just port.
Closes#520
With new `rocksdb` it's no longer necessary to disable features when dynamically linking.
Thus this change removes instructions to add `--no-default-features`.
However there's now a new feature called `metrics` which enables Prometheus.
This change also documents this and explains how to turn it off.
Closes#517
This warns users that they shouldn't touch `db_dir` internals except for
deleting the old `mainnet` database. It explains in details how to do
upgrade and deleting properly, calls it out in release notes and fixes
small style mistake in nearby heading.
It can be thought of as more explicit/detailed version of
8b8ebea0018d3e9a97ce965845b1914df4b4d8a4 or a textual alternative to
PR #513.