Commit Graph

124 Commits

Author SHA1 Message Date
Winlin
6e1134fe9b
Use clang format. v7.0.52 (#4433)
---------

Co-authored-by: ChenGH <chengh_math@126.com>
2025-08-11 23:19:19 -04:00
ChenGH
13597d1b7f
update copyright to 2025. v5.0.218 v6.0.159 v7.0.21 (#4271)
update copyright to 2025

---------

Co-authored-by: john <hondaxiao@tencent.com>
Co-authored-by: winlin <winlinvip@gmail.com>
2025-01-14 17:35:18 +08:00
Winlin
23d2602c34
UniquePtr: Support SrsUniquePtr to replace SrsAutoFree. v6.0.136 (#4109)
To manage an object:

```cpp
// Before
MyClass* ptr = new MyClass();
SrsAutoFree(MyClass, ptr);
ptr->do_something();

// Now
SrsUniquePtr<MyClass> ptr(new MyClass());
ptr->do_something();
```

To manage an array of objects:

```cpp
// Before
char* ptr = new char[10];
SrsAutoFreeA(char, ptr);
ptr[0] = 0xf;

// Now
SrsUniquePtr<char[]> ptr(new char[10]);
ptr[0] = 0xf;
```

In fact, SrsUniquePtr is a limited subset of SrsAutoFree, mainly
managing pointers and arrays. SrsUniquePtr is better than SrsAutoFree
because it has the same API to standard unique ptr.

```cpp
SrsUniquePtr<MyClass> ptr(new MyClass());
ptr->do_something();
MyClass* p = ptr.get();
```

SrsAutoFree actually uses a pointer to a pointer, so it can be set to
NULL, allowing the pointer's value to be changed later (this usage is
different from SrsUniquePtr).

```cpp
// OK to free ptr correctly.
MyClass* ptr;
SrsAutoFree(MyClass, ptr);
ptr = new MyClass();

// Crash because ptr is an invalid pointer.
MyClass* ptr;
SrsUniquePtr<MyClass> ptr(ptr);
ptr = new MyClass();
```

Additionally, SrsAutoFreeH can use specific release functions, which
SrsUniquePtr does not support.

---------

Co-authored-by: Jacob Su <suzp1984@gmail.com>
2024-07-09 10:29:36 +08:00
Winlin
7ab012c60f
SmartPtr: Support detect memory leak by valgrind. v6.0.132 (#4102)
1. Support detect memory leak by valgrind.
2. Free the http handler entry.
3. Free the stack of ST.

---

Co-authored-by: Jacob Su <suzp1984@gmail.com>
2024-06-29 11:16:32 +08:00
Winlin
6834ec208d
SmartPtr: Use shared ptr to manage GB objects. v6.0.126 (#4080)
The object relations: 

![gb](https://github.com/ossrs/srs/assets/2777660/266e8a4e-3f1e-4805-8406-9008d6a63aa0)

Session manages SIP and Media object using shared resource or shared
ptr. Note that I actually use SrsExecutorCoroutine to delete the object
when each coroutine is done, because there is always a dedicate
coroutine for each object.

For SIP and Media object, they directly use the session by raw pointer,
it's safe because session always live longer than session and media
object.

---

Co-authored-by: Jacob Su <suzp1984@gmail.com>
2024-06-12 22:40:20 +08:00
Jacob Su
5eb802daca
Support x509 certification chiain in single pem file. v5.0.211 v6.0.122 (#4033)
Fix #3967 There is an API `SSL_use_certificate_chain_file`, which can load the
certification chain and also single certificate.

---------

Co-authored-by: winlin <winlinvip@gmail.com>
2024-04-22 10:15:11 +08:00
winlin
2a2da2253f Switch to 2013-2024. v6.0.109 2024-01-01 10:51:24 +08:00
winlin
29eff1a242 Refine LICENSE. 2023-10-23 14:33:19 +08:00
chundonglinlin
27f9db9762
SSL: Fix SSL_get_error get the error of other coroutine. v5.0.155, v6.0.46 (#3513)
---------

Co-authored-by: john <hondaxiao@tencent.com>
Co-authored-by: winlin <winlin@vip.126.com>
2023-05-29 13:00:41 +08:00
winlin
c46ef81ff2 SRS5: Update license date to 2023. v5.0.123
PICK 72f8ed4916
2023-01-01 08:56:20 +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
winlin
ef0aefd546 GC: Eliminate unused code. v5.0.84 2022-10-30 12:42:37 +08:00
winlin
d9cf874033 Build: Refine build script. 2022-10-12 20:21:23 +08:00
winlin
d4ce877407 Kernel: Refine lazy sweep resource. 2022-10-04 21:07:49 +08:00
winlin
927dd473eb Kernel: Support lazy sweeping simple GC. v5.0.69 2022-09-30 18:33:29 +08:00
winlin
378bffa34f Micro changes and refines. 2022-09-30 17:57:48 +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
1630918b0f Refactor: Use compositor for ISrsKbpsDelta. v5.0.51 2022-08-30 09:26:51 +08:00
winlin
d117145b95 Update date from 2021 to 2022. 2022-06-20 19:22:25 +08:00
winlin
665ad564fb Rename service to protocol files. 2022-06-09 19:59:51 +08:00
winlin
d5c86dc5fa Switch LICENSE from MIT to **MIT or MulanPSL-2.0**. v5.0.21 2022-01-13 18:40:22 +08:00
winlin
e22035b749 Squash: Fix RTC session info bug 2021-08-14 14:45:12 +08:00
Winlin
c8a1e0f3da
Refine AUTHORS.txt to AUTHORS.md, etc. 5.0.8 (#2464)
* Refine AUTHORS.txt to AUTHORS.md, etc. 5.0.8

* Update README.md

* Update README.md

* Refine format for AUTHORS.md
2021-07-08 14:30:47 +08:00
winlin
15901cacee SquashSRS4: Use SPDX-License-Identifier: MIT. 5.0.3 2021-05-31 13:42:20 +08:00
winlin
3256c7c2fa SquashSRS4: Refine the init of global objects 2021-05-08 11:51:54 +08:00
winlin
8b74c7cb89 SquashSRS4: Happy 2021 2021-04-16 09:29:43 +08:00
winlin
1909cfb3ff Kernel: Never depends on another globals for global variables 2021-02-25 14:06:18 +08:00
winlin
18c27111e0 RTC: update stat for pli, timer and dispose 2021-02-08 11:45:34 +08:00
winlin
cbfec753f0 Update server stat for fast-id search 2021-02-07 20:57:22 +08:00
winlin
af499094f8 Update server stat for fast-id search 2021-02-07 20:54:06 +08:00
winlin
95193979f4 RTC: Use vector for fast search fast-id 2021-02-07 19:31:46 +08:00
winlin
8cb5cab717 RTC: Refine UDP packet peer fast id. 4.0.68 2021-02-05 18:04:29 +08:00
winlin
ec212b7413 Merge branch '4.0release' into develop 2020-12-21 12:06:25 +08:00
winlin
764909c6cf Clear disposing then free resources to avoid reuse addresses 2020-12-21 12:05:56 +08:00
winlin
6afdf3addf Merge branch '4.0release' into develop 2020-12-21 12:00:03 +08:00
winlin
e8fa92e3d1 Refine logs for resource manager 2020-12-21 11:59:35 +08:00
winlin
5949eee4f4 Keep resources when dispoing to avoid reuse addresses. 2020-12-21 11:56:22 +08:00
winlin
9217fad73b Hotfix: Print resource address when manager dispose it 2020-12-21 11:28:58 +08:00
winlin
c7c6d8778a RTC: Fix warnings 2020-12-08 16:59:43 +08:00
winlin
385e055c7b For #1657, Fix read bug. 4.0.53 2020-11-06 21:55:17 +08:00
winlin
4618bfc137 For #1657, fix the http read bug 2020-11-06 21:15:19 +08:00
winlin
6dc9824495 For #1657, fix the http read bug 2020-11-06 20:45:44 +08:00
winlin
79655adea0 For #1657, fix the http read bug 2020-11-06 19:53:37 +08:00
winlin
c3f23f4c23 For #1657, fix the http read bug 2020-11-06 19:42:22 +08:00
winlin
a20f02ffe1 For #1657, Read cached data first in SSL. 4.0.48 2020-11-06 19:14:04 +08:00
winlin
30ba5a32ed For #1657, Support HTTPS Streaming 2020-11-06 17:22:23 +08:00
winlin
272ca9d0f6 For #1657, Support HTTPS API 2020-11-06 15:05:01 +08:00
winlin
fc21b31714 For #1657, refine the context for disposing 2020-11-05 17:16:59 +08:00