57 Commits

Author SHA1 Message Date
Raja Subramanian
9055a34981 Path check helpers (#4392)
* Path check helpers

* remove trailing slash
2026-03-25 10:53:07 +05:30
Jacob Gelman
a6035212f5 ESP32 client info (#4267) 2026-02-11 16:25:02 +11:00
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
b8ddd0f98c Taking interface{} -> any modernize bits (#4204) 2025-12-28 05:22:12 +05:30
cnderrauber
76645fad5e Rpcs for ingress proxy WHIP (#3911)
See https://github.com/livekit/protocol/pull/1194
2025-09-09 22:49:42 +08:00
Paul Wells
2aeadf14dc init ua parser once (#3883) 2025-08-28 05:20:25 -07:00
Raja Subramanian
e3155b146b Get to the point of establishing subscriber peer connection. (#3821)
Proper message id checks.

Some refactoring for common code in rtcv2service handlers.

Instantiate signalling based on synchronous local candidates flag, but
needs better defined code.
2025-07-25 14:49:04 +05:30
Benjamin Pracht
18ce524455 Handle Metadata field from RoomConfig (#3798) 2025-07-18 10:37:23 -07:00
Raja Subramanian
078c01fad3 Signal v2: envelope and fragments as wire message format. (#3800)
* Signal v2: envelope and fragments as wire message format.

Please see details in https://github.com/livekit/protocol/pull/1133

* log connect response
2025-07-18 15:24:32 +05:30
Raja Subramanian
b9a44c3fbf Signalling V2 protocol implementation start (#3794)
* WIP

* name

* refactor validate

* WIP

* WIP

* signal cache initial impl

* HandleConnect in room manager

* generate subscriber offer

* handle ConnectRequest as stand alone

* segmentation, reassembly

* clean up

* rearrange

* lock scope

* support metadata in connect request

* prom

* add SifTrailer to ConnectResponse

* prom for get offer error counter

* RtcInit counter

* Jie feedback

* signal client

* consolidate v1 and v2 into SignalClient

* clean up

* comment

* deps

* mage generate

* fix tests

* pass around roomName and participantIdentity

* mage generate
2025-07-18 00:01:21 +05:30
Raja Subramanian
9d569e2fef Take ClientInfo from request. (#3738)
This will allow WHIP client to pass in client info which can provide
more information about WHIP clients for telemetry.
2025-06-16 21:01:15 -07:00
Paul Wells
13b55a80ad move agent token (#3669) 2025-05-15 10:30:14 -07:00
Raja Subramanian
b760918a0d Use logger from request context. (#3623)
That will have projectID and can potentially be used for project level
logging if we are able to pass around the project logger more.
2025-04-24 11:34:16 +05:30
Paul Wells
29c7906250 skip http request logging when the client aborts the request (#3195)
* skip http request logging when the client aborts the request

* cleanup
2024-11-22 00:42:49 -08:00
David Zhao
dd7cd7eafc Handle room configuration that's set in the grant itself (#3120)
* Handle room configuration that's set in the grant itself

* ensure refresh token contains updates

* deps

* dep

---------

Co-authored-by: Paul Wells <paulwe@gmail.com>
2024-10-21 23:31:12 -07:00
David Zhao
50576b503e Handle trailing slashes in URL (#2988)
When a user includes a trailing slash in LIVEKIT_URL, it would produce
double slashes in the path, i.e. `https://myhost.livekit.cloud//twirp/RoomService.ListRooms`

Currently the server will send a 302 MOVED response, causing Twirp requests to fail.

We now remove the double slash in front within the middleware.
2024-09-07 11:30:24 -07:00
Raja Subramanian
1e2da70122 Filter out context canceled errors from logging (#2492)
* Filter out context canceled errors from logging

* move a few more warns to debug
2024-02-19 10:19:55 +05:30
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
David Zhao
981fb7cac7 Adding license notices (#1913)
* Adding license notices

* remove from config
2023-07-27 16:43:19 -07:00
David Zhao
fc6a306031 Create a helper for retrieving a user's actual IP (#1579) 2023-04-04 19:32:49 -07:00
David Zhao
bd39a96eac Tweak call stack depth to show more helpful error lines (#1333) 2023-01-25 15:35:18 -08:00
David Zhao
d9059f4f3b Do not accept websocket connection if response not received (#923)
When the instance handling the signal request did not respond to the
initial connection, we will fail the connection attempt instead of
having it hang forever.
2022-08-16 19:57:41 -07:00
David Zhao
5920672802 feat: unpublish tracks after publish permissions are revoked. (#545)
* feat: unpublish tracks after publish permissions are revoked.

Uses protocol 7 to indicate client support, otherwise it attempts to
mute the tracks.

Also sends back permissions objects of all participants, and cleaned up
our handling of various permissions attributes.

* fix static check
2022-03-21 00:20:48 -07:00
David Colburn
faa870de3d Move callbacks out of messageRouter (#269)
* move callbacks out of messageRouter

* OCD

* more OCD

* fix forwarder test

* even more OCD

* maximum OCD

* package name collision, copy lock by value
2021-12-17 13:19:23 -08:00
Raja Subramanian
e54ce4f674 Stream Allocator Try 3 (#257)
* Stream Allocator Try 3

Making an intermediate PR to do
- Special treatment for screen share tracks
- When allocating all tracks,
  o try to stream all tracks by starting with the lowest layer
  o multi-pass across tracks to get a more even distribution

Not yet done:
-------------
In deficient state,
o Allocate a specific track on a change
o Steal from other tracks

* Correct sense of managed track

* have to range to copy

* generate

* fix VideoLayers compare

* Use t.simulcasted
2021-12-14 12:48:09 +05:30
David Zhao
2d93ccd668 Updated protocol from protocol/proto -> protocol/livekit (#242)
* Updated protocol from protocol/proto -> protocol/livekit

* separate MediaTrack from PublishedTrack
2021-12-08 13:58:38 -08:00
David Colburn
0c8fe361b2 Small refactor (#148)
* small refactor

* extra line

* fix room allocator test

* selector fakes not used

* keep decisions out of router

* put nodeId logic back

* fix room allocator test
2021-10-18 21:49:16 -05:00
David Colburn
1d626ba053 Update turn (#147)
* more generic turn server

* public turn realm name

* support turn cert itself in config

* remove cert/key from config

* double auth handler

* generate

Co-authored-by: Mathew Kamkar <578302+matkam@users.noreply.github.com>
2021-10-18 16:14:27 -05:00
David Zhao
c745f0a318 Region aware routing (#135)
* Region aware routing

* update config, fix spacing on commented out lines
2021-10-06 21:40:04 -07:00
David Colburn
d83b7b543d update protocol 2021-09-22 13:48:37 -07:00
David Colburn
347bf0345a Recording webhooks (#125)
* dump

* update protocol

* const

* regenerate wire

* message bus nil check

* nil message bus if no redis

* start and stop rec service
2021-09-21 23:46:25 -05:00
David Colburn
abde72a907 Remove room manager from room service (#119)
* start splitting

* room allocator

* remove room manager

* Update pkg/service/roomallocator.go

Co-authored-by: David Zhao <david@davidzhao.com>

Co-authored-by: David Zhao <david@davidzhao.com>
2021-09-17 01:29:29 -05:00
David Colburn
2a3fb5f0e7 move logging to protocol (#109) 2021-09-09 00:45:42 -07:00
David Colburn
e9ffbefa70 move recorder to msg bus (#108) 2021-09-02 17:06:48 -05:00
David Colburn
2fd61531d2 small refactor (#104) 2021-08-30 18:22:11 -05:00
David Colburn
69c1d4c295 Interfaces (#97)
* create interface

* move room manager to interface

* interfaces

* updates

* fix loop

* fix fakes

* remove node types
2021-08-28 18:28:08 -05:00
David Colburn
8a44fad307 protocol 0.8 (#95)
* protocol 0.8

* merge new selector
2021-08-27 13:16:33 -05:00
Mathew Kamkar
c437152e2b NodeSelector using system load metric (#94)
* use load when selecting nodes

* Apply suggestions from code review

Co-authored-by: David Zhao <david@davidzhao.com>

* sysload selector test

* wire nodeSelectorFromConfig

* fix tests

* Update pkg/routing/selectorsystemload_test.go

Co-authored-by: David Zhao <david@davidzhao.com>

* dz review: nits

Co-authored-by: David Zhao <david@davidzhao.com>
2021-08-26 15:24:39 -07:00
PJC
9016da1936 check turn domain and port range (#90)
* check negative turn port

* check turn domain

* domain check test code
2021-08-23 10:49:16 -07:00
David Zhao
bcf6e15e07 SendData API & publishData permission (#88)
* SendData Server API

* SendData Server-API adjustments based on suggestions

* Update proto version

* enforce publishData permission

* go mod tidy

* fix go.mod

* go mod tidy

Co-authored-by: ChesterMing <89124853+ChesterMing@users.noreply.github.com>
2021-08-19 18:11:48 -07:00
David Zhao
9495646f1a webhooks support (#81) 2021-08-09 09:57:37 -07:00
David Colburn
6111b2d4f8 Recording apis (#78)
* apis with auth

* recording service

* record permission

* protocol 0.6.5

* bump version
2021-08-04 22:44:06 -05:00
David Colburn
b00d5a02cb RoomRecorder (#70) 2021-07-27 00:39:48 -05:00
hn8
99e9997d0a feat: support SetLogger & SetLoggerFactory (#57)
* upgrade logr to stable release v1.0.0

* feat: support SetLogger & SetLoggerFactory
2021-07-18 21:28:09 -07:00
David Zhao
abedc05ce5 Improve logging, hook up ion with zap logger 2021-06-09 12:31:29 -07:00
David Zhao
e4238890ff Refactor/cleanup of negotiation path 2021-04-15 17:03:22 -07:00
David Zhao
7d02c01fd8 refactor - moved common code to livekit/protocol 2021-03-13 22:01:51 -08:00
David Zhao
fa2ffa46e7 Embedded TURN server 2021-03-06 22:47:48 -08:00
David Zhao
03d0a8c047 updated to ion-sfu v1.9.1, removed package bufferFactory 2021-03-01 14:49:46 -08:00
David Zhao
a96069969d support audio level extension & active speaker detection (#20)
* send active speaker updates with audio level

* add test on loudness sorting

* use a float to represent audio level
2021-02-14 14:30:23 -08:00