1839 Commits

Author SHA1 Message Date
Paul Wells
01f90d185f copy receivers on write (#2336)
* copy receivers on write

* cleanup

* cleanup

* test
2023-12-21 08:23:22 -08:00
Raja Subramanian
4c1047d8c3 Populate simulcast codec layers. (#2334)
Previously, it was done on read. Missed populating it on write
in the TrackInfo consolidation effort.

Fix by populating layers when adding pending track itself.
As all codecs will have same layers, clone the top level layers and add
it all codecs.
2023-12-21 18:52:49 +05:30
Raja Subramanian
a4888fcf8f Prevent unsafe access (hopefully). (#2332)
* Prevent unsafe access (hopefully).

Thank you @paulwe for catching it.

* prevent recursive locks
2023-12-21 16:02:10 +05:30
Kou
5dc87d7ac5 Fix panic occurs when starting livekit-server with key-file option (#2312) (#2313) 2023-12-20 23:18:28 -08:00
Raja Subramanian
faff67162b Consolidate TrackInfo. (#2331)
* Consolidate TrackInfo.

TrackInfo was spread across a bit. Consolidating it.

* TODO comments

* test

* update TrackInfo on SSRC change

* further consolidation

* log mimes only

* update receivers on SSRC set

* clone proto on return

* feedback: break loop on mime match

* prevent data race
2023-12-21 09:56:54 +05:30
David Zhao
be526cc43e Adds callback to notify when workers are registered (#2328) 2023-12-20 08:10:35 -08:00
Raja Subramanian
d0c36aa6cc Make UpdateTrackInfo an interface. (#2327) 2023-12-20 09:58:08 +05:30
Raja Subramanian
7c841e8895 Only assign TrackInfo Version on fresh publish. (#2325)
* Only assign TrackInfo Version on fresh publish.

* remove redundant nil check
2023-12-20 09:48:13 +05:30
Raja Subramanian
37539fdf76 Add Version to TrackInfo. (#2324)
* Add Version to TrackInfo.

Set when a track is published.

* update protocol
2023-12-19 11:50:48 +05:30
Raja Subramanian
5ee307952e Reduce a couple of logs to Debugw. Small saving. (#2322) 2023-12-18 14:27:55 +05:30
Raja Subramanian
3cf4fbc6a9 Store identity in participant update cache. (#2320)
Need to store identity of other partiicpant in cache so that it
can be sent with the disconnected participant update.
Side note: Feels like the cache can be made to hold the full proto
to make things simpler, but just adding a field for now.
2023-12-15 15:40:10 +05:30
cnderrauber
a150eaf697 Fix mid info lost when migrating multi-codec simulcast track (#2315)
* Fix mid info lost when migrating multi-codec simulcast track

* update pion
2023-12-15 00:02:27 +08:00
Raja Subramanian
0478af449f Do not error on end-of-candidates candidate (#2314) 2023-12-14 15:22:57 +05:30
lukasIO
23b46042cc Populate disconnect updates with participant identity (#2310) 2023-12-13 15:32:25 +01:00
Raja Subramanian
dfcafff955 Log track info when media published. (#2306)
With pending track added moved to Debugw, will be good to have this when
track is published.
2023-12-11 11:20:25 +05:30
Raja Subramanian
c766676d36 Handle nil pair (#2305) 2023-12-10 21:44:16 +05:30
cnderrauber
b0b7489b0e Fix svc freeze caused by key frame id wrap around (#2302)
* Fix svc freeze caused by key frame id wrap around

* rename
2023-12-07 12:53:17 +08:00
David Colburn
1bff4f387d Update io service (#2300)
* update io service

* consistency
2023-12-06 11:17:59 -08:00
Raja Subramanian
1f335dd564 Convert to formatter string for lazy evaluation. (#2298) 2023-12-06 18:11:05 +05:30
Raja Subramanian
83efa9258e Bump up protocol for connection quality LOST. (#2297)
Also log trackID/trackInfo in layer mapping.
2023-12-06 16:59:05 +05:30
cnderrauber
e1cc9d6b3c Fix log marshal error (#2295) 2023-12-06 00:08:48 +08:00
Paul Wells
d4c4bc1100 fix signal response delivery after session start failure (#2294)
* fix signal response delivery after session start failure

* tidy
2023-12-04 19:11:55 -08:00
Denys Smirnov
ec2efa2dc4 SIP: Better debug logging. (#2293) 2023-12-04 20:03:20 +02:00
Denys Smirnov
1240c1670b SIP: Properly handle nil trunk. (#2291) 2023-12-04 10:21:21 -05:00
David Zhao
02c28a5946 Fix Selected attribute not being copied (#2289) 2023-12-03 22:05:23 -08:00
David Zhao
98c81b92bb Helper function to remove address from ClientInfo (#2288) 2023-12-03 10:48:33 -08:00
David Zhao
37e1864df8 Expose detailed connection info with ICEConnectionDetails (#2287)
* Expose detailed connection info with ICEConnectionDetails

* clone to avoid data race

* lower transport

* simplify

* address feedback
2023-12-03 10:03:41 -08:00
David Zhao
3fe124c87f Log cleanup pass (#2285)
* Log cleanup pass

Demoted a bunch of logs to DEBUG, consolidated logs.

* use context logger and fix context var usage

* moved common error types, fixed tests
2023-12-02 15:07:31 -08:00
cfbraun
beecfe3710 Send data (#2270)
* Avoid dropping data packets on local router

* Remove change not needed for PR
2023-12-02 10:29:43 -08:00
Raja Subramanian
d866b5110f Restrict scope of negotiation time out error logs (#2283)
* Restrict scope of negotiation time out error logs

1. Log "negotiation failed" only if signal channel was active
within half window of negotiation timeout. Negotiation timeout currently
is at 15 seconds. Signal pings are every 10 seconds.
2. In transport.go, do not report negotiation timed out and do not
callback negotiation failure if the peer connection state is not
connected. Goal of negotiation failure tracker is to take remedial
action when an in-session negotiation fails. Seeing a bunch of cases
of the case hitting even without ICE connection forming. Negotiation
timer is not intended for those cases.

* fix test
2023-12-02 12:44:37 +05:30
Raja Subramanian
dcff75a516 Record number of data messages in prometheus. (#2282) 2023-12-01 16:10:57 +05:30
Raja Subramanian
2299a493de Throttle DD parse logs (#2281) 2023-12-01 12:42:12 +05:30
Raja Subramanian
7b778c50eb Group SDES items for one SSRC in the same chunk. (#2280) 2023-12-01 11:37:14 +05:30
Denys Smirnov
dd024571a1 SIP: Move dispatch rule evaluation to protocol package. (#2279) 2023-11-30 19:46:24 +02:00
Raja Subramanian
2ee5aa7c98 Add optional supervisor disable. (#2277)
* Add optional supervisor disable.

Used `DisableSupervisor` so that default can be enabled and
it can be disabled explicity. But, open to defaulting to disable
(i. e. change param to `EnableSupervisor`).

* Move nil check to call site
2023-11-30 13:04:31 +05:30
cnderrauber
0f1c1ec224 clean dd log (#2275)
* clean dd log

* Implemented Raja's feedback

---------

Co-authored-by: David Zhao <dz@livekit.io>
2023-11-29 12:12:29 -08:00
Raja Subramanian
a2053dfd94 ConnectionQuality DISCONNECTED -> LOST (#2276) 2023-11-29 23:17:17 +05:30
Denys Smirnov
b9ab057c6b SIP: Update protocol for outbound calls. (#2263) 2023-11-29 16:13:33 +02:00
Raja Subramanian
fa061b47fc Logging adjustnments (#2273) 2023-11-29 15:40:01 +05:30
Raja Subramanian
bfc4f19c74 Guard against bad quality in trackInfo (#2271) 2023-11-28 22:28:30 +05:30
David Zhao
4ba4f5310b Use default psrpc client parameters (#2269) 2023-11-27 23:20:16 -08:00
Raja Subramanian
396371312b Use variables for score -> quality mapping (#2268)
* Use variables for score -> quality mapping

* spelling
2023-11-28 11:51:21 +05:30
Paul Wells
890f0bfc67 initialize prometheus metrics in test files (#2267) 2023-11-27 21:31:39 -08:00
Raja Subramanian
5f76d1adcc Introduce DISCONNECTED connection quality. (#2265)
* Introduce `DISCONNECTED` connection quality.

Currently, this state happens when any up stream track does not
send any packets in an analysis window when it is expected to send
packets.

This can be used by participants to know the quality of a potentially
disconnected participant. Previously, it took 20 - 30 seconds for
the stale timeout to kick in and disconnect the limbo participant which
triggered a participant update through which other participants knew
about it.

Previously, `POOR` quality was also overloaded to denote that the
up stream is not sending any packets. With this change, that is a
separate indicator, i. e. `DISCONNECTED`.

* clean up

* Update deps

* spelling
2023-11-27 23:06:53 +05:30
Raja Subramanian
53542b09a0 Participant traffic load. (#2262)
* Participant traffic load.

Capturing information about participant traffic
- Upstream/Downstream
- Audio/Video/Data
- Packets/Bytes

This captures a notion of how much traffic load a participant is
generating.

Can be used to make allocation decisions.

* Clean up

* SIP patches

* reporter goroutine

* unlock

* move traffic stats from protocol

* check type
2023-11-26 23:05:00 +05:30
Raja Subramanian
56dd399684 Use a worker to report signal/data stats. (#2260)
* Use a worker to report signal/data stats.

Was checking if reporting is needed on every update.
The check is wasted work if volume of signal/data messages is high
as reporting happens only once in 10 seconds.

Changing to a worker based on a timer. And also aligning with
telemetry reporting interval which defaults to 30 seconds.

* Remove unused constant
2023-11-22 11:47:15 +05:30
Denys Smirnov
f18d6356e8 SIP: Update protocol, use NoPin flag. (#2250) 2023-11-20 10:18:59 -05:00
Raja Subramanian
8c3ec742e6 Use now for end time (#2248)
* Use now for end time

* less arithmetic
2023-11-17 12:00:47 +05:30
Raja Subramanian
c62382c76e Clean up restart a bit. (#2247) 2023-11-17 00:40:00 +05:30
Denys Smirnov
7bcd6d4df0 SIP: Implement GetSIPTrunkAuthentication. (#2244) 2023-11-15 15:29:36 -05:00