Commit Graph
1725 Commits
Author SHA1 Message Date
Alessandro RosandGitHub 2183d37d32 add comment to prevent security scan false positives (#5973) 2026-07-23 22:59:23 +02:00
Alessandro RosandGitHub 6da35dc389 moq: support draft-19 of the specification (#5968)
* support draft-19 of the specification

* support subscribing the same track multiple times
2026-07-21 00:24:03 +02:00
Alessandro RosandGitHub 58c6099e50 ask for credentials only in case of protocols that support it (#5966)
When clients connect with some protocols (SRT, RTMP), they are unable
to provide credentials even if they are asked to. In this case, it's
useless to wait for credentials, and it's better to immediately log
authentication errors and apply the anti-brute force algorithm.
2026-07-19 16:52:14 +02:00
Alessandro RosandGitHub 363ac206f7 moq: fix several panics and OOM errors (#5964)
Check for limits before allocating memory by using sizes passed from
the remote peer. Also add fuzzing to all MoQ primitives.
2026-07-19 12:13:45 +02:00
Alessandro RosandGitHub 83cc54418c moq: fix race condition during startup (#5965)
allocate the HTTP server only after the MoQ server has been initialized.
2026-07-19 11:29:04 +02:00
Alessandro RosandGitHub 0e6426c648 adjust code to prevent security scan false positives (#5963)
... about string escaping.
2026-07-19 10:20:37 +02:00
Alessandro RosandGitHub e14ada6f4b normalize authentication error messages (#5421) (#5959)
Log authentication errors as soon as possible, use the "warn" level,
use the same message whatever the author or protocol.
2026-07-19 10:04:17 +02:00
d15c14ec6a avoid potential timing attack when validating SHA256 credentials (#5961)
The == operator is vulnerable to timing attacks as it short-circuits on a mismatch. Use
ConstantTimeCompare to avoid this vector.

Co-authored-by: Tristan Matthews <tmatth@videolan.org>
2026-07-19 09:46:34 +02:00
Alessandro RosandGitHub 0378876293 fix wrong PTS and wrong playback of alwaysAvailableFile (#5436) (#5960)
PTS offset of samples was not properly considered, and sleep between
samples was PTS-based instead of being DTS-based.
2026-07-18 22:39:28 +02:00
Alessandro RosandGitHub fa7a89f840 rtsp: restrict UDP port range to 32768-60999 (#5398) (#5958)
this is the default Linux ephemeral port range.
2026-07-18 20:59:33 +02:00
Alessandro RosandGitHub d6e765976c srt: fix compatibility with StreamToStudio app (#5414) (#5928) 2026-07-18 17:59:05 +02:00
Alessandro RosandGitHub 96aeb1e603 rename runOnReady into runOnAvailable, runOnNotReady into runOnUnavailable (#5957) 2026-07-18 17:58:16 +02:00
Alessandro RosandGitHub 8909e35a17 add runOnOnline / runOnOffline hooks (#5399) (#5956)
These are triggered and a stream is online (i.e. not just provided by
an offline segment).
2026-07-18 17:41:38 +02:00
Alessandro RosandGitHub 75bf1af38c fix clearing lists with environment variables (#5410) (#5924)
MTX_AUTHINTERNALUSERS_0_IPS, MTX_LOGDESTINATIONS and MTX_RTSPTRANSPORTS
can now be used to clear their corresponding list by setting them to an
empty value.
2026-07-18 10:56:46 +02:00
Alessandro RosandGitHub e98b727277 fix error message (#5922)
'all' is a synonym for 'all_others'
2026-07-05 11:00:09 +02:00
Alessandro RosandGitHub 99f804d733 api: generate most of OpenAPI automatically (#5918)
enums and structs are now generated automatically. This eliminates some
inconsistencies and makes development easier.
2026-07-04 17:45:43 +02:00
Alessandro RosandGitHub 7eb5d30075 prevent truncation of 64-bit values on 32-bit platforms (#5902) 2026-06-28 11:37:14 +02:00
Alessandro RosandGitHub bf098c7eb5 support encoding secondary stream with H264 (2/2) (#4485) (#5898) 2026-06-28 11:19:23 +02:00
Alessandro RosandGitHub 1a7c10af1e rpicamera: support encoding primary stream with MJPEG (2/2) (#5892) 2026-06-27 19:19:36 +02:00
Alessandro RosandGitHub 07d0e232b2 rpi: add unified rpiCameraH264Profile, rpiCameraH264Level params (#5894)
These replace rpiCameraHardwareH264Profile, rpiCameraHardwareH264Level, rpiCameraSoftwareH264Profile, rpiCameraSoftwareH264Level.
2026-06-25 22:07:36 +02:00
Alessandro RosandGitHub b91affa054 rpi: exclude additional code from non-arm builds (#5893) 2026-06-25 19:37:28 +02:00
suMinandGitHub 8fcbd0a796 webrtc: skip unresolvable webrtcAdditionalHosts entries instead of aborting (#5845)
Since #4866, hostnames in webrtcAdditionalHosts are resolved server-side via
net.LookupIP, and a resolution failure aborts the entire WHEP/WHIP session.
A single entry that can't be resolved on the server (e.g. air-gapped networks
without DNS, or a name that only resolves on the client) therefore takes down
all WebRTC playback, even when the other entries are valid.

Log a warning and skip the unresolvable entry instead of returning an error,
so the remaining valid candidates are still offered.

Signed-off-by: suMin <sumin77123@gmail.com>
2026-06-22 21:14:04 +02:00
d31c0b3900 rtsp: add rtspScale parameter to inject Scale header on PLAY (#5800)
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-06-20 12:08:15 +02:00
Alessandro RosandGitHub 90b8d5c943 improve HTTP server performance (#5886)
log incoming requests without cloning.
2026-06-20 12:03:35 +02:00
VJSaiandGitHub 384cc66114 fix(recordstore): decode timezone offset minutes correctly (#5884)
timeLocationDecode multiplied the minutes field of a %z token by 3600
instead of 60, and did not apply the sign to the minutes term. As a
result, any non-whole-hour timezone offset (e.g. +0530, +0545, +0330,
-0330) was decoded incorrectly: +0530 produced 126000s instead of
19800s.

This broke the round-trip between Path.Encode and Path.Decode for
fractional-hour timezones. The encode side already used off/60/60 and
(off/60)%60 correctly, so this change makes the two consistent.

Add round-trip test cases with fractional-hour offsets (+0530, +0545,
-0330) to cover the previously untested code path.
2026-06-20 11:21:54 +02:00
Alessandro RosandGitHub 28d648da37 move Content-Types to log in a map (#5875) 2026-06-20 09:35:55 +02:00
varun-nominalandGitHub 472e86d48c redact sensitive headers in HTTP debug logs (#5873) 2026-06-20 09:19:01 +02:00
bluenviron-botandGitHub 49aa78bc1d bump Alpine to 3.24 (#5853) 2026-06-15 19:02:39 +02:00
Alessandro RosandGitHub 874b47d0b0 remove redundant copy operation (#5862)
Since #5856, OrigDesc of Streams is never changed, so there's no reason
to clone offlineDesc before putting it into OrigDesc.
2026-06-13 11:45:44 +02:00
2d08cfec7b playback: fix panic when MP4 muxer flushes with no samples (#5867)
Co-authored-by: Arturo2511 <arturomozzon@gmail.com>
2026-06-13 11:22:53 +02:00
Alessandro RosandGitHub d0cf294637 print body of selected HTTP responses when log level is debug (#5859) 2026-06-11 00:53:52 +02:00
Alessandro RosandGitHub 959f58cee9 limit size of HTTP requests shown in debug logs (#5858) 2026-06-11 00:31:10 +02:00
Alessandro RosandGitHub 3940e68415 rtsp: restore support for H264 packetization-mode 0 (#5846) (#5857)
H264 streams with packetization-mode=0 cannot be routed with UDP since
packets are too big. Inbound streams with packetization-mode=0 are
blocked by the server since v1.19.0 but this caused compatibility
issues with some cameras.

The server is now able to receive such streams with TCP, and
automatically remuxes them in streams with packetization-mode=1, which
can be routed freely.
2026-06-10 23:59:40 +02:00
Alessandro RosandGitHub 7e576d077f rtsp: use ServerStream.ReloadDesc to propagate description changes to RTSP servers (#5856) 2026-06-10 23:46:02 +02:00
Alessandro RosandGitHub 51f826057a moq: rename moqHTTPS2Address into moqHTTP2Address, moqHTTPS3Address into moqHTTP3Address (#5841) 2026-06-07 16:34:37 +02:00
Alessandro RosandGitHub c8eabc0307 hls: fix race condition in tests (#5842) 2026-06-07 16:28:27 +02:00
b2dc62e13c rtmp, rtsp: support PROXY protocol (#5754)
Support PROXY protocol v1/v2 on RTMP, RTMPS, RTSP, and RTSPS TCP
listeners so real client IPs are visible when running behind L4 proxies
(nginx stream, HAProxy, AWS NLB).

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-06-05 21:37:53 +02:00
Alessandro RosandGitHub f5d7ed3138 improve anti-brute force mechanism (#5835)
delay authentication failure responses by a random amount of time, use
the same anti-brute force mechanism with all users.
2026-06-05 17:01:36 +02:00
Alessandro RosandGitHub 5b9b6afcb8 replace errors.As with modern errors.AsType (#5834) 2026-06-05 09:56:06 +02:00
6d1f152cc2 support using regexp groups in every part of a source URL (#5766) (#5779)
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-06-03 23:40:22 +02:00
Alessandro RosandGitHub b5b63d02fc support reading and publishing with Media-over-QUIC (#5815)
Media-over-QUIC is a streaming protocol built upon cutting edge
protocols (QUIC, HTTP3) and browser APIs (WebTransport, WebCodecs).
It's slightly faster than WebRTC, has an advanced data recovery
mechanism (placed at the frame level and not at the packet level), it
supports additional codecs (FLAC) and is less complicated to route.
2026-06-02 23:04:24 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>aler9
c11810c2fc build(deps): bump github.com/bluenviron/gortsplib/v5 from 5.5.3 to 5.5.4 (#5822)
* build(deps): bump github.com/bluenviron/gortsplib/v5 from 5.5.3 to 5.5.4

Bumps [github.com/bluenviron/gortsplib/v5](https://github.com/bluenviron/gortsplib) from 5.5.3 to 5.5.4.
- [Commits](https://github.com/bluenviron/gortsplib/compare/v5.5.3...v5.5.4)

---
updated-dependencies:
- dependency-name: github.com/bluenviron/gortsplib/v5
  dependency-version: 5.5.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* additional changes

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-06-02 21:50:15 +02:00
Alessandro RosandGitHub 640ddde51b webrtc: fix connectivity after network changes (#5097) (#5818) 2026-06-02 21:40:00 +02:00
5decbb4a3d Add user agent field to RTMP, RTSP, WebRTC, and HLS (#5753)
Surface user agent in the auth HTTP webhook payload as "userAgent"
and in the API structs for RTMP, RTSP, WebRTC and HLS connections.

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-06-02 20:29:07 +02:00
Alessandro RosandGitHub 0d7cbd6df8 fix two hot reloading cases (#5817)
* reload SRT server when metrics server is reloaded
* reload API server when RTMPS server is reloaded
2026-06-02 10:06:24 +02:00
Alessandro RosandGitHub 7ab03cdc58 webrtc: rename incoming/outgoing into inbound/outbound (#5816) 2026-06-02 09:15:49 +02:00
Alessandro RosandGitHub 0f5a76e253 modernize code (#5814) 2026-05-31 20:33:48 +02:00
Alessandro RosandGitHub 903627ffed apply prettier to the entire repository (#5799) 2026-05-26 11:35:14 +02:00
Alessandro RosandGitHub e63dd7132a hls: remove redundant JavaScript argument (#5806) 2026-05-26 11:22:19 +02:00
Alessandro RosandGitHub 66a824d3f1 webrtc: make handleError accept strings only (#5805) 2026-05-26 11:13:01 +02:00