From 46a06992324dfe0f89e805e60f9cabcdded6db02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Ma=C5=82ecki?= Date: Tue, 9 Jun 2020 09:08:46 +0200 Subject: [PATCH] Fixed restrictions on pre-bind only options --- srtcore/core.cpp | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/srtcore/core.cpp b/srtcore/core.cpp index a34fee556f..d415b86e7e 100644 --- a/srtcore/core.cpp +++ b/srtcore/core.cpp @@ -603,33 +603,38 @@ void CUDT::setOpt(SRT_SOCKOPT optName, const void* optval, int optlen) break; case SRTO_TSBPDMODE: - if (m_bConnected) - throw CUDTException(MJ_NOTSUP, MN_ISCONNECTED, 0); + if (m_bOpened) + throw CUDTException(MJ_NOTSUP, MN_ISBOUND, 0); + m_bOPT_TsbPd = cast_optval(optval, optlen); break; case SRTO_LATENCY: - if (m_bConnected) - throw CUDTException(MJ_NOTSUP, MN_ISCONNECTED, 0); + if (m_bOpened) + throw CUDTException(MJ_NOTSUP, MN_ISBOUND, 0); + m_iOPT_TsbPdDelay = cast_optval(optval, optlen); m_iOPT_PeerTsbPdDelay = cast_optval(optval); break; case SRTO_RCVLATENCY: - if (m_bConnected) - throw CUDTException(MJ_NOTSUP, MN_ISCONNECTED, 0); + if (m_bOpened) + throw CUDTException(MJ_NOTSUP, MN_ISBOUND, 0); + m_iOPT_TsbPdDelay = cast_optval(optval, optlen); break; case SRTO_PEERLATENCY: - if (m_bConnected) - throw CUDTException(MJ_NOTSUP, MN_ISCONNECTED, 0); + if (m_bOpened) + throw CUDTException(MJ_NOTSUP, MN_ISBOUND, 0); + m_iOPT_PeerTsbPdDelay = cast_optval(optval, optlen); break; case SRTO_TLPKTDROP: - if (m_bConnected) - throw CUDTException(MJ_NOTSUP, MN_ISCONNECTED, 0); + if (m_bOpened) + throw CUDTException(MJ_NOTSUP, MN_ISBOUND, 0); + m_bOPT_TLPktDrop = cast_optval(optval, optlen); break; @@ -725,8 +730,9 @@ void CUDT::setOpt(SRT_SOCKOPT optName, const void* optval, int optlen) break; case SRTO_NAKREPORT: - if (m_bConnected) - throw CUDTException(MJ_NOTSUP, MN_ISCONNECTED, 0); + if (m_bOpened) + throw CUDTException(MJ_NOTSUP, MN_ISBOUND, 0); + m_bRcvNakReport = cast_optval(optval, optlen); break; @@ -829,8 +835,8 @@ void CUDT::setOpt(SRT_SOCKOPT optName, const void* optval, int optlen) break; case SRTO_TRANSTYPE: - if (m_bConnected) - throw CUDTException(MJ_NOTSUP, MN_ISCONNECTED, 0); + if (m_bOpened) + throw CUDTException(MJ_NOTSUP, MN_ISBOUND, 0); // XXX Note that here the configuration for SRTT_LIVE // is the same as DEFAULT VALUES for these fields set