Outlets on random ports can't be found by unicast discovery, without any warning
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 45/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- cpp
- Domain
- networking
Research direction
Start in src/resolver_impl.cpp: read the port selection that falls back to OS-chosen ports when BasePort..BasePort+PortRange is exhausted, then the resolve_oneshot wave target list and resolve_attempt_udp, where send errors are dropped. A first step is a warning naming PortRange when an outlet falls back to a random port, plus logging of the dropped send errors. Probing MulticastPort for KnownPeers is a design question to raise with maintainers before changing the target list.
Written by the indexing model from the issue text.
Description
When an outlet can't get ports in [BasePort, BasePort+PortRange) (default 16572–16603), for example because more than ~16 outlets (or resolvers, which take ports from the same range) run on one machine, it silently falls back to OS-chosen ports (AllowRandomPorts, default on). Unicast discovery only probes the port range:
KnownPeersare queried onBasePort..BasePort+PortRangeonly, never onMulticastPort(16571) (src/resolver_impl.cpp,resolve_oneshot/wave target list).- The machine addresses (
127.0.0.1) are probed the same way.
So such an outlet is found only by real multicast/broadcast; with ResolveScope=machine or KnownPeers-only setups it is invisible, and nothing in the logs explains why.
Proposed: log a warning when an outlet falls back to a random port (naming PortRange), and consider also probing MulticastPort for KnownPeers. Separately, resolve_attempt_udp drops send errors without logging them, which makes these cases hard to diagnose.
- Dominant language
- C++
- Stars
- 182
- Forks
- 91
- Avg merge
- 8h 46m
- Merged PRs (30d)
- 16
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from sccn/liblsl
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
bug
Difficulty 3/5 Half a day Newbie friendliness 35/100
Maintainers usually reply within 1 day
Similar issues
-
bug libcudf
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 2 days
-
level/task module/cloud monitoring type/maintenance
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
LadybirdBrowser/ladybird#13809 ·
Maintainers usually reply within 1 day
-
bug module:nodes tests
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
rocketride-org/rocketride-server#3020 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 9 days