Commit Graph

3616 Commits

Author SHA1 Message Date
Paul Wells
c8bb2578be Rename log field "pID" to "participantID" for consistency (#4365)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 04:32:02 -07:00
Raja Subramanian
77fc74a727 Do not block all ext ID determination on stream allocator listener (#4364)
availability.

Added checks for unexpected changes.
2026-03-15 14:30:47 +05:30
Raja Subramanian
90a46fabb1 Do not kick off migration of closed participant (#4363) 2026-03-15 10:39:55 +05:30
Raja Subramanian
5dc2e7b180 Switch data track extension to 1-byte ID/length. (#4362)
And match design to RTP header extension, i. e. the padding for
extensions is not at per extension level (which was the case before),
but has been changed to padding the aggregate of all extensions in this
PR.
2026-03-14 13:29:40 +05:30
Raja Subramanian
7323ad02b7 Sample data send error logging. (#4358)
There are cases where data channel is not created potentially and
logging on every one of those errors is verbose.
2026-03-12 12:02:18 +05:30
Raja Subramanian
0d34e45572 Add option to not re-use transceiver in e2ee. (#4356) 2026-03-11 17:41:13 +05:30
cnderrauber
95225ff2e1 don't require media section for dual peerconnection mode (#4354) 2026-03-09 20:56:55 +08:00
cnderrauber
e963953817 Refine ipv6 support (#4352)
* Refine ipv6 support

* go mod

* check ipv4 is set in turn
2026-03-09 20:43:00 +08:00
Milos Pesic
b34b047247 Add StopEgress function to the EgressLauncher interface (#4353)
This allows for abstracting away how the stop is implemented - default implementation stays the same - the existing OSS egress launcher just calls the existing Stop method on the client.
2026-03-09 13:17:05 +01:00
Jacob Gelman
69235ed261 update readme (#4340) 2026-03-08 23:47:54 -07:00
Raja Subramanian
db1a804696 defensive check for peer connection instance (#4350) 2026-03-08 08:34:53 +05:30
He Chen
cb7dc2d02a TEL-405: support originating calls from custom domains (#4349) 2026-03-06 12:25:40 -08:00
Raja Subramanian
7eaaaada5d Mark last run of grow bucket outside goroutine. (#4348)
* straem tracker debug logging

* tracker

* debug

* clean up
2026-03-06 19:36:13 +05:30
cnderrauber
caa47522fb Add option to require media sections when participant joining (#4347)
Negotiate media tracks at first sdp round
2026-03-06 03:59:00 +08:00
Raja Subramanian
087050d182 Release v1.9.12 (#4346) v1.9.12 2026-03-05 23:41:20 +05:30
Denys Smirnov
493e87dfd4 Fix SIP client timeout. (#4345) 2026-03-05 19:09:17 +02:00
Raja Subramanian
52c28a938d Log a bit more details of out-of-order TWCC feedback report. (#4343)
* Log a bit more details of out-of-order TWCC feedback report.

* Revert to mono.Now()
2026-03-05 11:55:13 +05:30
Raja Subramanian
516aeabf45 Use ParticipantTelemetryListener of LocalParticipant. (#4342)
Had made a change in remote participant case to not have telemetry
listener as telemetry does not apply to remote participant. But, that
listener ended up getting used for subscriber and became a null
listener. Use the listener of the subscriber participant for subscribed
tracks.
2026-03-05 11:24:48 +05:30
cnderrauber
b35105656c Exclude ice restart case from offer answer id mismatch warning (#4341) 2026-03-05 13:05:37 +08:00
Paolo Moretti
303657bcdf feat: make INSTALL_PATH overridable in install script (#3954)
Allow users to override the installation path by setting the INSTALL_PATH
environment variable before running the script.

This can be useful in CI environments such as CircleCI where the default
/usr/local/bin path requires sudo privileges that may not be available or desired.

Usage:
- Default: curl -sSL https://get.livekit.io/cli | bash
- Custom: INSTALL_PATH="$HOME/.local/bin" curl -sSL https://get.livekit.io/cli | bash
2026-02-26 14:43:30 -08:00
cnderrauber
9d418689c6 Send participant left event after track unpublished for moved (#4334)
participant
2026-02-25 13:22:33 +08:00
Raja Subramanian
bab9186840 do not discount packets lost on duplicate packets (#4333) 2026-02-23 23:55:56 +05:30
Raja Subramanian
939794cf47 mark + restart (#4329) 2026-02-21 15:12:13 +05:30
Raja Subramanian
75f9c462be Add debug for receiver restart. (#4328)
* Add debug for receiver restart.

Have a suspicion that something is deadlocking between restart receiver
and buffer bind during replay. Adding debug to get a better picture of
state of receiver restart.

* consistent logging
2026-02-20 01:44:59 +05:30
Raja Subramanian
74891f30fe Protect against incorrect temporal layer. (#4327)
Seeing some tracks with temporal layer higher than array bounds.
Protect against it and log some info to understand better.
2026-02-19 23:57:58 +05:30
Raja Subramanian
f51b27328f Update pion/webrtc and deps to update dtls (#4326)
DTLS v3.1.0 was retracted - https://github.com/pion/dtls/pull/800
2026-02-19 13:43:20 +05:30
Raja Subramanian
b81bac0ec3 Key telemetry stats worker using combination of roomID, participantID (#4323)
Some checks failed
Test / test (push) Failing after 17s
Release to Docker / docker (push) Failing after 3m42s
* Key telemetry stats work using combination of roomID, participantID

With forwarded participant, the same participantID can existing in two
rooms.

NOTE: This does not yet allow a participant session to report its
events/track stats into multiple rooms. That would require regitering
multiple listeners (from rooms a participant is forwarded to).

* missed file

* data channel stats

* PR comments + pass in room name so that telemetry events have proper room name also
2026-02-16 13:56:13 +05:30
Topherhindman
2d40449faf Update self-hosting deployment documentation link (#4312)
Some checks failed
Test / test (push) Failing after 1m21s
Release to Docker / docker (push) Failing after 6m21s
2026-02-11 11:45:47 -08:00
Benjamin Pracht
03e90dd762 Fix for some CodeQL reported issues (#4314)
One of the fix is in updated protocol (logging of a request message that includes the turn server settings, including password).
2026-02-11 10:15:12 -08:00
Raja Subramanian
77c858f001 Log stats worker when it not closable. (#4313) 2026-02-11 13:18:34 +05:30
Jacob Gelman
a6035212f5 ESP32 client info (#4267) 2026-02-11 16:25:02 +11:00
Benjamin Pracht
478e486a4b Copilot suggested improvement to Github Actions permissions (#4310)
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-02-10 15:57:31 -08:00
Benjamin Pracht
cbd2f82d1c Copilot suggested improvement to Github Actions permissions (#4311)
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-02-10 15:57:17 -08:00
Raja Subramanian
a9b8d40de4 Publish is always on publisher peer connection. (#4307) 2026-02-10 13:43:30 +05:30
cnderrauber
8ae564065e generate & log egressID for start egress request (#4303)
* generate & log egressID for start egress request

* seprate method

* use ctx value instead of metadata

* comment
2026-02-10 09:34:56 +08:00
Raja Subramanian
35d7ef88c2 Avoid alloc in RTPStatsReceiver.Update (#4302)
Using a pointer to the logging context was doing allocations.
2026-02-09 11:53:17 +05:30
Raja Subramanian
bb744916fd More optimisation in RTPStats module. (#4298)
Was hoping for more hidden bits to optimise, but oh well.
2026-02-06 21:33:41 +05:30
Raja Subramanian
cefd5da940 Optimise some bits in rtpstats_receiver (#4297)
* Optimise some bits in rtpstats_receiver

RTPStatsReceiver.Update is one of the high CPU bits. Taking some
suggestions from Cursor. Makes the `Update` function verbose though :-(

* zap.Inline logging fields

* rename
2026-02-06 21:26:30 +05:30
Raja Subramanian
52a4b848a4 Read client protocol from query param (#4294)
* Read client protocol from query param

* Atoi -> ParseInt
2026-02-06 11:33:13 +05:30
Raja Subramanian
195b17f62f Populate client_protocol field in ParticipantInfo (#4293) 2026-02-06 00:34:56 +05:30
Raja Subramanian
370e0a4d52 Set up audio config in audio level module when config is updated. (#4290)
* Set up audio config in audio level module when config is updated.

It is possible to get audio config after bind (bind is where the audio
level module is created) for remote tracks. So, split out setting audio
level config in audio level module and invoke it when config is updated.

* coderabbit review

* prevent divide-by-0

* not active before config
2026-02-05 09:35:26 +05:30
Raja Subramanian
f3e9b68854 Do not increase max expected layer on track info update. (#4285)
* Do not increase max expected layer on track info update.

When max expected layer increases, the corresponding trackers are reset
so that first packets from those layers can trigger a layer detected
change enabling quick detection of layer start.

A track info update changing max to what is in track info could set the
max expected to be higher without resetting the tracker. And that would
cause dynacast induced max layer change to miss tracker reset too.

Sequence
- dynacast sets max expected to 0
- track info update sets it to 2
- dynacast sets it to 1 --> this should have reset tracker on layer 1,
  but because it is less than current max (2), it is skipped.

* thank you CodeRabbit

* force update on start
2026-02-04 12:19:41 +05:30
Raja Subramanian
a9849340c3 Avoid logger data race. (#4284)
Also defer promise channel close.
2026-02-04 01:35:44 +05:30
Raja Subramanian
9701662757 Do not hold lock when creating buffer (#4283)
* create buffer outside lock

* more debug

* initialize on new buffer

* clean up

* address CodeRabbit catch
2026-02-04 00:55:49 +05:30
Raja Subramanian
6b68e3d536 Create buffer if needed when a PLI is requested. (#4282)
Useful across relay where a PLI may be requested before a buffer exists and
needs to be created.
2026-02-03 18:34:38 +05:30
Paul Wells
3cca718072 use separate allocation for signal stats telemetry guard (#4281) 2026-02-03 02:13:49 -08:00
Raja Subramanian
d2bae34d53 refresh telemetry guard on participant move (#4280) 2026-02-03 15:34:16 +05:30
Paul Wells
333f0349d1 clear reference guard when resetting signal stats (#4279) 2026-02-03 01:54:03 -08:00
Raja Subramanian
d1bab17b76 Add session duration and participant kind to closing log. (#4277)
To allow using "participant closing" log entry for calculating things
like session duration by paricipant kind or some other client SDK based
attribute.
2026-02-03 07:07:24 +05:30
Raja Subramanian
1e689e1a24 Reducing some info level logs. (#4274)
* Reducing some info level logs.

Also, relaxing the check for runaway RTCP receiver report to allow for
rollover to catch up if it is not too far away.

* set logger
2026-02-02 10:54:03 +05:30