From b8db61bd9cd1b04de31c0ec6610626ef230ea289 Mon Sep 17 00:00:00 2001 From: winlin Date: Sun, 5 Apr 2020 22:13:49 +0800 Subject: [PATCH] For #307, Support disable sendmmsg --- trunk/auto/auto_headers.sh | 5 +++++ trunk/auto/options.sh | 10 +++++++--- trunk/src/service/srs_service_st.cpp | 2 +- trunk/src/service/srs_service_st.hpp | 2 +- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/trunk/auto/auto_headers.sh b/trunk/auto/auto_headers.sh index e43f424e0..84b64319b 100755 --- a/trunk/auto/auto_headers.sh +++ b/trunk/auto/auto_headers.sh @@ -165,6 +165,11 @@ if [ $SRS_SENDMMSG = YES ]; then else srs_undefine_macro "SRS_AUTO_SENDMMSG" $SRS_AUTO_HEADERS_H fi +if [ $SRS_HAS_SENDMMSG = YES ]; then + srs_define_macro "SRS_AUTO_HAS_SENDMMSG" $SRS_AUTO_HEADERS_H +else + srs_undefine_macro "SRS_AUTO_HAS_SENDMMSG" $SRS_AUTO_HEADERS_H +fi # prefix echo "" >> $SRS_AUTO_HEADERS_H diff --git a/trunk/auto/options.sh b/trunk/auto/options.sh index 3f2c79550..b85acb384 100755 --- a/trunk/auto/options.sh +++ b/trunk/auto/options.sh @@ -121,6 +121,7 @@ SRS_EXTRA_FLAGS= SRS_NASM=YES SRS_SRTP_ASM=YES SRS_SENDMMSG=YES +SRS_HAS_SENDMMSG=YES ##################################################################################### # menu @@ -564,9 +565,12 @@ function apply_user_detail_options() { fi grep -qs sendmmsg /usr/include/sys/socket.h - if [[ $? -ne 0 && $SRS_SENDMMSG == YES ]]; then - echo "Disable UDP sendmmsg automatically" - SRS_SENDMMSG=NO + if [[ $? -ne 0 ]]; then + SRS_HAS_SENDMMSG=NO + if [[ $SRS_SENDMMSG == YES ]]; then + echo "Disable UDP sendmmsg automatically" + SRS_SENDMMSG=NO + fi fi } apply_user_detail_options diff --git a/trunk/src/service/srs_service_st.cpp b/trunk/src/service/srs_service_st.cpp index d088f5cf4..f79220654 100644 --- a/trunk/src/service/srs_service_st.cpp +++ b/trunk/src/service/srs_service_st.cpp @@ -409,7 +409,7 @@ int srs_sendmsg(srs_netfd_t stfd, const struct msghdr *msg, int flags, srs_utime int srs_sendmmsg(srs_netfd_t stfd, struct mmsghdr *msgvec, unsigned int vlen, int flags, srs_utime_t timeout) { -#if defined(SRS_AUTO_OSX) || !defined(SRS_AUTO_SENDMMSG) +#if !defined(SRS_AUTO_HAS_SENDMMSG) || !defined(SRS_AUTO_SENDMMSG) // @see http://man7.org/linux/man-pages/man2/sendmmsg.2.html for (int i = 0; i < (int)vlen; ++i) { struct mmsghdr* p = msgvec + i; diff --git a/trunk/src/service/srs_service_st.hpp b/trunk/src/service/srs_service_st.hpp index 69c93a465..784c58add 100644 --- a/trunk/src/service/srs_service_st.hpp +++ b/trunk/src/service/srs_service_st.hpp @@ -91,7 +91,7 @@ extern int srs_recvfrom(srs_netfd_t stfd, void *buf, int len, struct sockaddr *f extern int srs_sendto(srs_netfd_t stfd, void *buf, int len, const struct sockaddr *to, int tolen, srs_utime_t timeout); extern int srs_sendmsg(srs_netfd_t stfd, const struct msghdr *msg, int flags, srs_utime_t timeout); -#if !defined(SRS_AUTO_SENDMMSG) +#if !defined(SRS_AUTO_HAS_SENDMMSG) // @see http://man7.org/linux/man-pages/man2/sendmmsg.2.html #include struct mmsghdr {