From 526cd62075db17b36c0ce58ef60645ee86208541 Mon Sep 17 00:00:00 2001 From: Matthew Date: Sat, 26 Feb 2022 07:50:09 +0800 Subject: [PATCH] Fix FD leak when exceed max connections limit. (#2925) * fix fd leak when tcp connection exceed max_connection, that connection will leak because of not closing the fd * fix leak, code refine --- trunk/src/app/srs_app_server.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/trunk/src/app/srs_app_server.cpp b/trunk/src/app/srs_app_server.cpp index df2de9938..f8d1de30d 100644 --- a/trunk/src/app/srs_app_server.cpp +++ b/trunk/src/app/srs_app_server.cpp @@ -1374,8 +1374,10 @@ srs_error_t SrsServer::accept_client(SrsListenerType type, srs_netfd_t stfd) ISrsStartableConneciton* conn = NULL; if ((err = fd_to_resource(type, stfd, &conn)) != srs_success) { + //close fd on conn error, otherwise will lead to fd leak -gs + srs_close_stfd(stfd); if (srs_error_code(err) == ERROR_SOCKET_GET_PEER_IP && _srs_config->empty_ip_ok()) { - srs_close_stfd(stfd); srs_error_reset(err); + srs_error_reset(err); return srs_success; } return srs_error_wrap(err, "fd to resource");