Allow Forward to be configured with Env Var. v6.0.170 (#4245)

Allow Env Var to control forwarding function.

By AI:

* [AI: Add utests for
PR.](1b978d19a5)

---------

Co-authored-by: Haibo Chen <495810242@qq.com>
Co-authored-by: chundonglinlin <chundonglinlin@163.com>
Co-authored-by: winlin <winlinvip@gmail.com>
This commit is contained in:
Shengming Yuan 2025-07-28 08:37:38 -04:00 committed by winlin
parent 45090ce4fc
commit aeca022165
5 changed files with 339 additions and 260 deletions

View File

@ -7,6 +7,7 @@ The changelog for SRS.
<a name="v6-changes"></a>
## SRS 6.0 Changelog
* v6.0, 2025-07-28, Merge [#4245](https://github.com/ossrs/srs/pull/4245): Allow Forward to be configured with Env Var. v6.0.170 (#4245)
* v6.0, 2025-07-10, Merge [#4414](https://github.com/ossrs/srs/pull/4414): Fix H.264 B-frame detection logic to comply with specification. v6.0.169 (#4414)
* v6.0, 2025-06-04, Merge [#4325](https://github.com/ossrs/srs/pull/4325): fix bug: loop transcoding #3516. v6.0.168 (#4325)
* v6.0, 2025-05-29, Merge [#4356](https://github.com/ossrs/srs/pull/4356): RTMP: Use extended timestamp as delta when chunk fmt=1/2. v6.0.167 (#4356)

View File

@ -5566,7 +5566,10 @@ int SrsConfig::get_global_chunk_size()
return ::atoi(conf->arg0().c_str());
}
bool SrsConfig::get_forward_enabled(string vhost) {
bool SrsConfig::get_forward_enabled(string vhost)
{
SRS_OVERWRITE_BY_ENV_BOOL("srs.vhost.forward.enabled"); // SRS_VHOST_FORWARD_ENABLED
static bool DEFAULT = false;
SrsConfDirective* conf = get_vhost(vhost);
@ -5579,6 +5582,8 @@ bool SrsConfig::get_forward_enabled(string vhost) {
bool SrsConfig::get_forward_enabled(SrsConfDirective* vhost)
{
SRS_OVERWRITE_BY_ENV_BOOL("srs.vhost.forward.enabled"); // SRS_VHOST_FORWARD_ENABLED
static bool DEFAULT = false;
SrsConfDirective* conf = vhost->get("forward");
@ -5611,6 +5616,9 @@ SrsConfDirective* SrsConfig::get_forwards(string vhost)
SrsConfDirective* SrsConfig::get_forward_backend(string vhost)
{
SRS_OVERWRITE_BY_ENV_DIRECTIVE("srs.vhost.forward.backend"); // SRS_VHOST_FORWARD_BACKEND
SrsConfDirective* conf = get_vhost(vhost);
if (!conf) {
return NULL;

View File

@ -9,6 +9,6 @@
#define VERSION_MAJOR 6
#define VERSION_MINOR 0
#define VERSION_REVISION 169
#define VERSION_REVISION 170
#endif

File diff suppressed because it is too large Load Diff

View File

@ -45,13 +45,17 @@ class ISrsSetEnvConfig
{
private:
std::string key;
SrsConfig* conf;
public:
ISrsSetEnvConfig(const std::string& k, const std::string& v, bool overwrite) {
ISrsSetEnvConfig(SrsConfig* c, const std::string& k, const std::string& v, bool overwrite) {
conf = c;
key = k;
srs_setenv(k, v, overwrite);
}
virtual ~ISrsSetEnvConfig() {
srs_unsetenv(key);
srs_freep(conf->env_cache_);
conf->env_cache_ = new SrsConfDirective();
}
private:
// Adds, changes environment variables, which may starts with $.
@ -60,8 +64,8 @@ private:
int srs_unsetenv(const std::string& key);
};
#define SrsSetEnvConfig(instance, key, value) \
ISrsSetEnvConfig _SRS_free_##instance(key, value, true)
#define SrsSetEnvConfig(conf, instance, key, value) \
ISrsSetEnvConfig _SRS_free_##instance(&conf, key, value, true)
#endif