Commit Graph

112 Commits

Author SHA1 Message Date
Winlin
1fa2cba7c0
Organize utility functions to kernel. v7.0.65 (#4455) 2025-08-27 21:35:58 -04:00
Winlin
1b6f97bd2d
Refine source lock to fix race condition in source managers. v7.0.61 (#4449)
This PR fixes a critical race condition in SRS source managers where
multiple coroutines could create duplicate sources for the same stream.

- **Atomic source creation**: Source lookup, creation, and pool
insertion now happen atomically within lock scope
- **Consistent interface**: Standardize on `ISrsRequest*` interface
throughout codebase
- **Handler simplification**: Remove `ISrsLiveSourceHandler*` parameter,
obtain from global server instance

---------

Co-authored-by: OSSRS-AI <winlinam@gmail.com>
2025-08-23 07:36:41 -06:00
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
e7069788e9
SmartPtr: Support shared ptr for live source. v6.0.129 (#4089)
Detail change log:

1. [Simple,Refactor] Remove member fields of http entry, etc.
e34b3d3aa4
2. [Ignore] Rename source to live_source.
846f95ec96
3. [Ignore] Use directly ptr in consumer.
d38af021ad
4. [Complex, Important] Use shared ptr for live source.
88f922413a

The object relationship:

![live-source](https://github.com/ossrs/srs/assets/2777660/1adb59af-6e7a-40f3-9a4a-1cc849d7dae1)

---

Co-authored-by: Jacob Su <suzp1984@gmail.com>
2024-06-15 07:54:56 +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
winlin
c46ef81ff2 SRS5: Update license date to 2023. v5.0.123
PICK 72f8ed4916
2023-01-01 08:56:20 +08:00
winlin
457738f6eb Fix #2881: HTTP: Support merging api to server. v5.0.47 2022-08-28 13:11:31 +08:00
winlin
d117145b95 Update date from 2021 to 2022. 2022-06-20 19:22:25 +08:00
winlin
fa78cf3354 Prefix with srs_protocol in protocol directory. 2022-06-09 20:26:58 +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
a81aa2edc5 Squash: Merge SRS 4.0 2021-10-10 12:05:26 +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
e3bca883e1 SuqashSRS4: Build SRT native 2021-05-16 16:14:00 +08:00
winlin
6a980683f7 SquashSRS4: Remove object cache and stat api 2021-05-14 18:17:42 +08:00
winlin
8b74c7cb89 SquashSRS4: Happy 2021 2021-04-16 09:29:43 +08:00
winlin
4fc1a19415 For #2194, yield for timer, for live publisher 2021-02-11 22:03:00 +08:00
winlin
97880f6bb7 ST: Allow set the default stack size 2020-10-22 17:06:36 +08:00
winlin
311cb77b36 Context: Refine API 2020-08-30 09:53:10 +08:00
winlin
f551ff5ae8 Log: Use string compare function 2020-07-05 23:49:47 +08:00
winlin
6624b8acca Log: Use object as context id for complex context 2020-07-05 23:26:55 +08:00
winlin
8a0c2e01f8 Log: Change cid from int to string 2020-06-18 11:45:43 +08:00
winlin
90a39ec46d Add api to stat mw iovec 2020-03-27 13:37:39 +08:00
winlin
d783a12f89 Happy 2020 2019-12-30 10:10:35 +08:00
winlin
f6f49c68da Refine SrsRecvThread timeout in time unit 2019-04-18 08:42:43 +08:00
winlin
feb34ed225 Refine SrsStSocket in time unit 2019-04-17 09:21:38 +08:00
winlin
d3dc45f357 Refine set_recv_timeout in time unit 2019-04-17 08:31:53 +08:00
winlin
0879bef9b2 Refine SRS_CONSTS_NO_TMMS to SRS_UTIME_NO_TIMEOUT 2019-04-11 09:33:26 +08:00
winlin
9b7c0802a9 Refine srs_update_system_time in time unit 2019-04-10 08:32:46 +08:00
winlin
170872135d Refine get_publish_1stpkt_timeout in time unit 2019-04-10 07:53:09 +08:00
winlin
839a496d50 Refine get_mr_sleep in time unit 2019-04-09 09:20:44 +08:00
winlin
b2d1d84634 Change to 2019 2019-01-01 21:37:28 +08:00
winlin
ca1395a807 Change date from 2017 to 2018 2018-01-07 10:58:53 +08:00
winlin
6eae93258a For #913, APP support complex error. 2018-01-01 19:39:57 +08:00
winlin
9802dc326e For #913, source support complex error 2017-09-23 22:12:33 +08:00
winlin
fd91df9411 For #913, reload use complex error 2017-09-22 16:14:30 +08:00
winlin
9f5224c34a For #913, use complex error for http 2017-07-29 21:39:57 +08:00
winlin
9db2a04c3b For #913, coroutine support complex error. 2017-06-11 18:44:20 +08:00
winlin
9ca36970aa Fix #908, use empty coroutine to avoid NULL pointer. 2017-06-04 19:13:56 +08:00
winlin
1bf99e8f3e For #907, Wrap ST, only use in service ST. 2017-05-30 09:05:02 +08:00
winlin
6993ac226f For #906, #902, use coroutine for reusable2 thread 2017-05-29 20:49:29 +08:00
winlin
2ed2513f08 For #906, #902, use coroutine for one cycle thread 2017-05-29 19:45:19 +08:00
winlin
b21f92f97a For #906, #902, remove the thread start and stop event 2017-05-29 18:42:36 +08:00
HungMingWu
815d50f00a Remove warning: C++11 requires a space between string literal and macro (#874)
On Ubuntu 17.04, the default gcc compiler version is 6.3.0.
It switch standard from c++98 to c++11.
So it would generate verbose warnings.
2017-05-06 14:05:22 +08:00
winlin
f97260be1d Merge SRS2 2017-05-01 16:44:14 +08:00
winlin
ae5450181c Fix #636, FD leak for requesting empty HTTP stream. 2.0.241 2017-04-30 12:03:31 +08:00
winlin
c97f2233a2 Merge SRS2 for #851 2017-04-23 21:00:06 +08:00