From f8990c5f414d4575415e2a3981c3b142222ca3d4 Mon Sep 17 00:00:00 2001 From: Anthony Delannoy Date: Thu, 16 Jan 2020 11:18:35 +0100 Subject: [PATCH] avformat/libsrt: fix enabling nonblocking mode As written in https://github.com/Haivision/srt/blob/v1.4.1/docs/API.md, the nonblock mode is activated if SRTO_SNDSYN and SRTO_RCVSYN, for sending and receiving respectively, are set to 0. Signed-off-by: Marton Balint --- libavformat/libsrt.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c index 16975b6d94..443df5bee8 100644 --- a/libavformat/libsrt.c +++ b/libavformat/libsrt.c @@ -154,10 +154,12 @@ static int libsrt_neterrno(URLContext *h) static int libsrt_socket_nonblock(int socket, int enable) { - int ret = srt_setsockopt(socket, 0, SRTO_SNDSYN, &enable, sizeof(enable)); + int ret, blocking = enable ? 0 : 1; + /* Setting SRTO_{SND,RCV}SYN options to 1 enable blocking mode, setting them to 0 enable non-blocking mode. */ + ret = srt_setsockopt(socket, 0, SRTO_SNDSYN, &blocking, sizeof(blocking)); if (ret < 0) return ret; - return srt_setsockopt(socket, 0, SRTO_RCVSYN, &enable, sizeof(enable)); + return srt_setsockopt(socket, 0, SRTO_RCVSYN, &blocking, sizeof(blocking)); } static int libsrt_network_wait_fd(URLContext *h, int eid, int fd, int write)