mirror of
https://github.com/ossrs/srs.git
synced 2025-02-12 11:21:52 +00:00
For #1598, support SLB health checking by TCP. 3.0.123
This commit is contained in:
parent
4a69499f2c
commit
20b9d6ab02
8 changed files with 34 additions and 3 deletions
|
@ -146,6 +146,7 @@ For previous versions, please read:
|
|||
|
||||
## V3 changes
|
||||
|
||||
* v3.0, 2020-02-21, For [#1598][bug #1598], support SLB health checking by TCP. 3.0.123
|
||||
* v3.0, 2020-02-21, Fix bug for librtmp client ipv4/ipv6 socket. 3.0.122
|
||||
* v3.0, 2020-02-18, For [#1579][bug #1579], support start/final wait for gracefully quit. 3.0.121
|
||||
* v3.0, 2020-02-18, For [#1579][bug #1579], support force gracefully quit. 3.0.120
|
||||
|
@ -1656,6 +1657,7 @@ Winlin
|
|||
[bug #1595]: https://github.com/ossrs/srs/issues/1595
|
||||
[bug #1601]: https://github.com/ossrs/srs/issues/1601
|
||||
[bug #1579]: https://github.com/ossrs/srs/issues/1579
|
||||
[bug #1598]: https://github.com/ossrs/srs/issues/1598
|
||||
[bug #xxxxxxxxxxxxx]: https://github.com/ossrs/srs/issues/xxxxxxxxxxxxx
|
||||
|
||||
[exo #828]: https://github.com/google/ExoPlayer/pull/828
|
||||
|
|
|
@ -72,6 +72,10 @@ work_dir ./;
|
|||
# @reamrk do not support reload.
|
||||
# default: off
|
||||
asprocess off;
|
||||
# Whether client empty IP is ok, for example, health checking by SLB.
|
||||
# If ok(on), we will ignore this connection without warnings or errors.
|
||||
# default: on
|
||||
empty_ip_ok on;
|
||||
|
||||
# For gracefully quit, wait for a while then close listeners,
|
||||
# because K8S notify SRS with SIGQUIT and update Service simultaneously,
|
||||
|
|
|
@ -76,8 +76,12 @@ srs_error_t SrsAppCasterFlv::initialize()
|
|||
srs_error_t SrsAppCasterFlv::on_tcp_client(srs_netfd_t stfd)
|
||||
{
|
||||
srs_error_t err = srs_success;
|
||||
|
||||
|
||||
string ip = srs_get_peer_ip(srs_netfd_fileno(stfd));
|
||||
if (ip.empty() && !_srs_config->empty_ip_ok()) {
|
||||
srs_warn("empty ip for fd=%d", srs_netfd_fileno(stfd));
|
||||
}
|
||||
|
||||
SrsHttpConn* conn = new SrsDynamicHttpConn(this, stfd, http_mux, ip);
|
||||
conns.push_back(conn);
|
||||
|
||||
|
|
|
@ -3488,7 +3488,7 @@ srs_error_t SrsConfig::check_normal_config()
|
|||
&& n != "http_server" && n != "stream_caster"
|
||||
&& n != "utc_time" && n != "work_dir" && n != "asprocess"
|
||||
&& n != "ff_log_level" && n != "grace_final_wait" && n != "force_grace_quit"
|
||||
&& n != "grace_start_wait"
|
||||
&& n != "grace_start_wait" && n != "empty_ip_ok"
|
||||
) {
|
||||
return srs_error_new(ERROR_SYSTEM_CONFIG_INVALID, "illegal directive %s", n.c_str());
|
||||
}
|
||||
|
@ -4051,6 +4051,18 @@ bool SrsConfig::get_asprocess()
|
|||
return SRS_CONF_PERFER_FALSE(conf->arg0());
|
||||
}
|
||||
|
||||
bool SrsConfig::empty_ip_ok()
|
||||
{
|
||||
static bool DEFAULT = true;
|
||||
|
||||
SrsConfDirective* conf = root->get("empty_ip_ok");
|
||||
if (!conf || conf->arg0().empty()) {
|
||||
return DEFAULT;
|
||||
}
|
||||
|
||||
return SRS_CONF_PERFER_TRUE(conf->arg0());
|
||||
}
|
||||
|
||||
srs_utime_t SrsConfig::get_grace_start_wait()
|
||||
{
|
||||
static srs_utime_t DEFAULT = 2300 * SRS_UTIME_MILLISECONDS;
|
||||
|
|
|
@ -468,6 +468,8 @@ public:
|
|||
virtual std::string get_work_dir();
|
||||
// Whether use asprocess mode.
|
||||
virtual bool get_asprocess();
|
||||
// Whether empty client IP is ok.
|
||||
virtual bool empty_ip_ok();
|
||||
// Get the start wait in ms for gracefully quit.
|
||||
virtual srs_utime_t get_grace_start_wait();
|
||||
// Get the final wait in ms for gracefully quit.
|
||||
|
|
|
@ -243,6 +243,9 @@ srs_error_t SrsRtspConn::do_cycle()
|
|||
|
||||
// retrieve ip of client.
|
||||
std::string ip = srs_get_peer_ip(srs_netfd_fileno(stfd));
|
||||
if (ip.empty() && !_srs_config->empty_ip_ok()) {
|
||||
srs_warn("empty ip for fd=%d", srs_netfd_fileno(stfd));
|
||||
}
|
||||
srs_trace("rtsp: serve %s", ip.c_str());
|
||||
|
||||
// consume all rtsp messages.
|
||||
|
|
|
@ -1237,6 +1237,10 @@ srs_error_t SrsServer::accept_client(SrsListenerType type, srs_netfd_t stfd)
|
|||
SrsConnection* conn = NULL;
|
||||
|
||||
if ((err = fd2conn(type, stfd, &conn)) != srs_success) {
|
||||
if (srs_error_code(err) == ERROR_SOCKET_GET_PEER_IP && _srs_config->empty_ip_ok()) {
|
||||
srs_close_stfd(stfd); srs_error_reset(err);
|
||||
return srs_success;
|
||||
}
|
||||
return srs_error_wrap(err, "fd2conn");
|
||||
}
|
||||
srs_assert(conn);
|
||||
|
|
|
@ -24,6 +24,6 @@
|
|||
#ifndef SRS_CORE_VERSION3_HPP
|
||||
#define SRS_CORE_VERSION3_HPP
|
||||
|
||||
#define SRS_VERSION3_REVISION 122
|
||||
#define SRS_VERSION3_REVISION 123
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue