[Why]
If the system uses distinct listeners for IPv4 and IPv6, the functions
listing or stopping listeners would crash because they assumed that the
system would listen implicitly to IPv4 when starting an IPv6 listener.
This is a common Linuxism.
[How]
The code now understands that a given protocol can have several
associated listeners.
The name and return value of several exported functions changed to
reflect that they work on several elements or return a list of elements.
Therefore it is a breaking change for plugins relying on these
functions.
This uses Cowboy's new direct data delivery mechanism,
which provides more performance.
Cowboy is now pinned to 2.14.0 and Cowlib to 2.16.0.
HTTP/2 Websocket is enabled by default. It can be disabled
as needed by setting `#{enable_connect_protocol => false}`
in the plugin's `cowboy_opts`.
Web-STOMP did not have HTTP/2 enabled before, now it does.
Web-MQTT already had HTTP/2 enabled.
We don't need to duplicate so many patterns in so many
files since we have a monorepo (and want to keep it).
If I managed to miss something or remove something that
should stay, please put it back. Note that monorepo-wide
patterns should go in the top-level .gitignore file.
Other .gitignore files are for application or folder-
specific patterns.
Stats were not removed, including management UI stats
relating to FDs.
Web-MQTT and Web-STOMP configuration relating to FHC
were not removed.
The file_handle_cache itself must be kept until we
remove CQv1.
as selective receives are efficient in OTP 26:
```
OTP-18431
Application(s):
compiler, stdlib
Related Id(s):
PR-6739
Improved the selective receive optimization, which can now be enabled for references returned from other functions.
This greatly improves the performance of gen_server:send_request/3, gen_server:wait_response/2, and similar functions.
```
Bazel build files are now maintained primarily with `bazel run
gazelle`. This will analyze and merge changes into the build files as
necessitated by certain code changes (e.g. the introduction of new
modules).
In some cases there hints to gazelle in the build files, such as `#
gazelle:erlang...` or `# keep` comments. xref checks on plugins that
depend on the cli are a good example.
- Use the same base .plt everywhere, so there is no need to list
standard apps everywhere
- Fix typespecs: some typos and the use of not-exported types
- Server closes connection on the error case, so the client was not able
to do so and consequently hung
- Do not test for the error code returned by the server, because it is
not part of the spec and now accessible via the websocket client,
which handles the TCP close instead of the Websocket close message