Commit Graph

599 Commits

Author SHA1 Message Date
Winlin
9995147704 RTMP: Do not response publish start message if hooks fail. v5.0.212 (#4038)
Fix #4037 SRS should not send the publish start message
`onStatus(NetStream.Publish.Start)` if hooks fail, which causes OBS to
repeatedly reconnect.

Note that this fix does not send an RTMP error message when publishing
fails, because neither OBS nor FFmpeg process this specific error
message; they only display a general error.

Apart from the order of messages, nothing else has been changed.
Previously, we sent the publish start message
`onStatus(NetStream.Publish.Start)` before the HTTP hook `on_publish`;
now, we have modified it to send this message after the HTTP hook.
2024-04-23 15:22:41 +08:00
Winlin
c75c9840d5 Merge pull request from GHSA-gv9r-qcjc-5hj7
* Filter JSONP callback function name. v5.0.210,v6.0.121

* Add utest.

* Refine utest
2024-03-28 11:02:09 +08:00
winlin
e15fb07916 Switch to 2013-2024. v5.0.205 2023-12-30 09:29:07 +08:00
john
268bac58bd RTC: Fix FFmpeg opus audio noisy issue. v5.0.195 (#3845)
Follow the example in FFmpeg's doc, before calling the API
`avcodec_send_frame`, always use `av_frame_alloc` to create a new frame.

---------

Co-authored-by: Haibo Chen <495810242@qq.com>
2023-10-25 11:58:35 +08:00
john
ba33bb8f8b Support set the ice-ufrag and ice-pwd for connectivity check. v5.0.191 (#3837)
Checking the HTTPS API or UDP connectivity for WHIP tests can be
difficult. For example, if the UDP port isn't available but the API is
fine, OBS only says it can't connect to the server. It's hard to see the
HTTPS API response or check if the UDP port is available.

This feature lets you set the ice username and password in SRS. You can
then send a STUN request using nc and see the response, making it easier
to check UDP port connectivity.

1. Use curl to test the WHIP API, including ice-frag and ice-pwd
queries.
2. Use nc to send a STUN binding request to test UDP connectivity.
3. If both the API and UDP are working, you should get a STUN response.

---------

Co-authored-by: john <hondaxiao@tencent.com>
2023-10-17 22:36:10 +08:00
肖志宏
ef7fe1b186 Fix bug for upgrading to OpenSSL 3.0. v5.0.189 (#3827)
The fix is for the DH_set_length error. As shown in lines 2-5, OpenSSL
3.0 added a check for length, which allowed this issue to be exposed.
```
1 if (dh->params.q == NULL) {
2       /* secret exponent length, must satisfy 2^(l-1) <= p */
3        if (dh->length != 0
4            && dh->length >= BN_num_bits(dh->params.p))
5            goto err;
6        l = dh->length ? dh->length : BN_num_bits(dh->params.p) - 1;
7        if (!BN_priv_rand_ex(priv_key, l, BN_RAND_TOP_ONE,
8                             BN_RAND_BOTTOM_ANY, 0, ctx))
9            goto err;
        ... ...
    }
```

---------

Co-authored-by: john <hondaxiao@tencent.com>
2023-10-11 20:52:25 +08:00
Haibo Chen
4455065246
Cherry-pick from develop, for srt utest. v5.0.185 (#3816) 2023-09-28 09:48:54 +08:00
Winlin
bc0a516fd1 Support FFmpeg timecode, fix AMF0 parsing failed. v5.0.179 (#3804)
Please see https://github.com/ossrs/srs/issues/3803 for detail:

1. When using FFmpeg with the `-map 0` option, there may be a 4-byte
timecode in the AMF0 Data.
2. SRS should be able to handle this packet without causing a parsing
error, as it's generally expected to be an AMF0 string, not a 4-byte
timecode.
3. Disregard the timecode since SRS doesn't utilize it.

See [Error submitting a packet to the muxer: Broken pipe, Error muxing a
packet](https://trac.ffmpeg.org/ticket/10565)

---------

Co-authored-by: john <hondaxiao@tencent.com>
2023-09-18 13:53:28 +08:00
Jacob Su
cbb5edcc3c SrsContextId assignment can be improved without create a duplicated one. v5.0.175 (#3503)
SrsContextId object creation can be improved on `srs_protocol_log.cpp`,
No need to create one, then assign it back. It seems a common mistake
for Cpp programmers.

---------

Co-authored-by: john <hondaxiao@tencent.com>
2023-08-28 15:55:54 +08:00
john
c7851da464 API: Fix HTTPS callback issue using SNI in TLS client handshake. v5.0.168 (#3695)
---------

Co-authored-by: chundonglinlin <chundonglinlin@163.com>
2023-07-21 12:33:01 +08:00
Winlin
6d679fd0e3 WHIP: Improve WHIP deletion by token verification. v5.0.164, v6.0.58 (#3595)
------

Co-authored-by: chundonglinlin <chundonglinlin@163.com>
2023-07-01 19:10:09 +08:00
Kazuo
596270feff H264: Fix H.264 ISOM reserved bit value. v5.0.161, v6.0.55 (#3551)
---------

Co-authored-by: chundonglinlin <chundonglinlin@163.com>
2023-06-22 06:37:43 +08:00
chundonglinlin
79fd66d8e6 SSL: Fix SSL_get_error get the error of other coroutine. v5.0.156, v6.0.46 (#3513)
---------

Co-authored-by: john <hondaxiao@tencent.com>
Co-authored-by: winlin <winlin@vip.126.com>
2023-05-29 13:03:59 +08:00
Haibo Chen
12f3a31175 API: Support HTTP basic authentication for API. v6.0.4, v5.0.152 (#3458)
PICK 771ae0a1a6

Co-authored-by: winlin <winlin@vip.126.com>
Co-authored-by: john <hondaxiao@tencent.com>
2023-04-01 12:48:33 +08:00
chundonglinlin
2f1d0ccd34 HttpConn: judge nb_chunk no memory address. (#3465)
Co-authored-by: john <hondaxiao@tencent.com>
2023-03-20 14:22:28 +08:00
Winlin
7fe0e28dd5 Compatible with legacy RTMP URL. v5.0.142. v6.0.27 (#3429)
For compatibility, transform
  rtmp://ip/app...vhost...VHOST/stream
to typical format:
  rtmp://ip/app/stream?vhost=VHOST

This is used for some legacy devices, which does not
support standard HTTP url query string.

PICK b75668b509

---------

Co-authored-by: chundonglinlin <chundonglinlin@163.com>
Co-authored-by: john <hondaxiao@tencent.com>
2023-02-23 10:13:18 +08:00
winlin
3612473516 CORS: Refine HTTP CORS headers. v5.0.130 2023-01-05 20:25:38 +08:00
winlin
72f8ed4916 Update license date to 2023. v5.0.123 2023-01-01 08:49:13 +08:00
Winlin
6f3d6b9b65
GB: Refine lazy object GC. v5.0.114 (#3321)
* GB: Refine lazy object GC.

1. Remove gc_set_creator_wrapper, pass by resource constructor.
2. Remove SRS_LAZY_WRAPPER_GENERATOR macro, use template directly.
3. Remove interfaces ISrsGbSipConn and ISrsGbSipConnWrapper.
4. Remove ISrsGbMediaConn and ISrsGbMediaConnWrapper.

* GC: Refine wrapper constructor.

* GB: Refine lazy object GC. v5.0.114
2022-12-20 19:54:25 +08:00
Haibo Chen
c5a0c5947f
API: Parse fragment of URI. v5.0.106 (#3295)
* parse fragment of uri
* adapt FMLE URL: 'rtmp://ip/app/app2#k=v/stream', then add more test case

Co-authored-by: winlin <winlin@vip.126.com>
2022-12-08 15:48:10 +08:00
john
271afbbf82
DASH: Fix number mode bug to make it run. v5.0.96 (#3240)
* Add utc time utility
* Fix calculate duration in fmp4
* Refine dash code, use segment template timeline
* Shrink m4s file and cleanup
* Support play by dash.js
* Use SegmentTemplate timeline mode with $Number$

Co-authored-by: winlin <winlin@vip.126.com>
2022-11-24 18:09:50 +08:00
ChenGH
6b130d4205
Asan: Try to fix st_memory_leak for asan check (#3264)
* asan: try to fix st_memory_leak for asan check

* asan: srs_st_unit should be call in hybrid server stop

* Rename st_uninit to st_destroy. v5.0.91

Co-authored-by: winlin <winlin@vip.126.com>
2022-11-21 23:49:38 +08:00
Winlin
d741f81110
For #2532: Windows: Support CYGWIN64 for SRS (#3255)
1. Support cygwin by '--cygwin64=on'
2. Detect cygwin automatically.
3. Disalbe sanitizer, srt and srtp with openssl.
4. Disable multiple threads, use single threads.
5. Support utest for cygwin64.
6. Query features for windows by API.
7. Disable stat APIs for cygwin.
8. Use ST select event driver.

Co-authored-by: wenjie.zhao <740936897@qq.com>
2022-11-20 12:29:57 +08:00
Winlin
368356c223
Support address sanitizer for utest and fix some leaks. (#3242)
* MP4: Fix memory leak when error.

* Kernel: Support free global objects for utest.

* HTTP: Fix memory leak when error.

* MP4: Support more sample rate for audio.

* RTMP: Support free field for utest.

* UTest: Support address sanitizer.
2022-11-18 11:19:01 +08:00
chundonglinlin
9f4338bd9d
For #2899: Exporter: Add metrics cpu, memory and uname. (#3224)
* Exporter: metrics support cpu gauge.
* Exporter: metrics support memory and uname..
* Exporter: Ignore error when uname fail.

Co-authored-by: winlin <winlin@vip.126.com>
2022-10-31 08:53:58 +08:00
winlin
ef0aefd546 GC: Eliminate unused code. v5.0.84 2022-10-30 12:42:37 +08:00
john
7d9dc69ae1
SRT: Support encrypt, with utest (#3223)
* SRT: support encrypt, with utest

* SRT: refine set srt option error log
2022-10-28 16:55:35 +08:00
john
20c38e07c0
SRT: Print socket status string when error (#3217) 2022-10-25 21:11:25 +08:00
winlin
e9915c3bd7 Log: Refine the log interface. v5.0.82 2022-10-25 09:20:55 +08:00
winlin
e10fa6dc91 Kernel: Support grab backtrace stack when assert fail. v5.0.80 2022-10-21 23:37:30 +08:00
winlin
d9cf874033 Build: Refine build script. 2022-10-12 20:21:23 +08:00
winlin
cfbbe3044f HTTP: Skip body and left message by upgrade. v5.0.73 2022-10-05 20:49:50 +08:00
winlin
d4ce877407 Kernel: Refine lazy sweep resource. 2022-10-04 21:07:49 +08:00
winlin
dc20d5ddbc ST: Support set context id while thread running. v5.0.72 2022-10-02 10:05:01 +08:00
winlin
d32bd72527 Micro changes and fix utest fail. 2022-09-30 19:32:22 +08:00
winlin
1e6143e2eb GB28181: Refine HTTP parser to support SIP. v5.0.70 2022-09-30 19:21:31 +08:00
winlin
927dd473eb Kernel: Support lazy sweeping simple GC. v5.0.69 2022-09-30 18:33:29 +08:00
winlin
4b7d9587f4 HTTP: Support HTTP header in creating order. v5.0.68 2022-09-30 18:22:25 +08:00
winlin
d65c699829 Micro changes and refines. 2022-09-30 18:11:59 +08:00
winlin
378bffa34f Micro changes and refines. 2022-09-30 17:57:48 +08:00
winlin
b452144fb7 GB28181: Remove unused RTSP protocol stack. 2022-09-30 12:35:10 +08:00
hondaxiao
4acb246c57 Fix #3181: SRT & WebRTC: Use SrsRawH264Stream to mux SPS/PPS. 2022-09-22 14:55:55 +08:00
winlin
3e2f8622f8 APM: Support distributed tracing by Tencent Cloud APM. v5.0.63 2022-09-16 18:54:28 +08:00
Li Peng
efa0851476 WebRTC: Refine code and destroy session when tcp close. 2022-09-04 22:57:47 +08:00
winlin
625069af7f WebRTC: Extract SrsRtcNetwork layer for UDP/TCP. 2022-09-04 20:14:09 +08:00
winlin
424713a31d Merge branch '4.0release' into develop 2022-09-03 22:12:46 +08:00
winlin
e0c8c199d5 Fix HTTP url parsing bug. v4.0.261 2022-09-03 22:11:00 +08:00
winlin
dd37a041b9 Fix URL parsing bug for __defaultVhost__. v5.0.55 2022-08-31 11:46:09 +08:00
winlin
9c6774b644 STAT: Refine tcUrl for SRT/RTC. v5.0.54 2022-08-30 21:28:06 +08:00
winlin
2c259bd95b Refactor: Extract SrsNetworkKbps from SrsKbps. v5.0.53 2022-08-30 13:41:27 +08:00