Server: request channel info and send version info first on a new connection — joiners become audible ~4 RTT sooner
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 65/100
- Issue type
- Refactor
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- cpp
- Domain
- audio-video-rtc, backend, networking
Research direction
The issue is about reordering two message creations in server.cpp's OnNewConnection to reduce latency for joining clients. Start by examining src/server.cpp lines 397-471, focusing on CreateClientIDMes, CreateVersionAndOSMes, and CreateReqChanInfoMes. Understand the stop-and-wait queue in protocol.cpp lines 519-541. Test the change by building the server and simulating joins with different RTTs to verify the improvement in audible delay.
Written by the indexing model from the issue text.
Description
🤖 AI: A joining client stays inaudible until the server has its channel info: the fade-in advances only once bIsIdentified is set (#1589), and OnNewConnection requests it seventh in a stop-and-wait queue, one RTT per message.
With CreateVersionAndOSMes() and CreateReqChanInfoMes() moved right after CreateClientIDMes(), a 4.0.0beta3 joiner is heard sooner (netem loopback, tone recorded at a second client, 5 joins each):
| RTT | current | reordered |
|---|---|---|
| 20 ms | 197 ms | 119 ms |
| 100 ms | 805 ms | 395 ms |
| 200 ms | 1546 ms | 749 ms |
Moving only the channel-info request lands the sequence-counter switch inside the fade: a ~270 ms dropout on 8 of 8 joins. Moving both: 0–15 ms (current: 0–69 ms). Every client release 3.7.0–4.0.0beta3 joined (23 of 23).
It also shortens #3107's unidentified window: channel info arrives 302 ms after the first audio packet instead of 710 ms (100 ms RTT).
Does anything depend on the current order?
🤖 This message was written by AI and reviewed by @mcfnord.
- Dominant language
- C
- Stars
- 1.1k
- Forks
- 248
- Avg merge
- 2d 20h
- Merged PRs (30d)
- 8
Contributor guide
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 jamulussoftware/jamulus
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
jamulussoftware/jamulus#3953 · 2 comments ·
-
AI bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
jamulussoftware/jamulus#3901 · 4 comments · 1 reaction ·
-
AI
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
jamulussoftware/jamulus#3846 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 76/100
jamulussoftware/jamulus#3958 ·
-
refactoring
jamulussoftware/jamulus#3955 · 1 comment · 1 assignee ·
All issues in jamulussoftware/jamulus
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
bradcypert/plum#53 ·
-
Component: GLib
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Status: Opened
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
nextbsd/nextbsd-userland#285 ·