mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Upgrade libsrt to v1.5.3. v5.0.183 v6.0.81 (#3808)
fix https://github.com/ossrs/srs/issues/3155 Build srt-1-fit fails with `standard attributes in middle of decl-specifiers` on GCC 12,Arch Linux. See https://github.com/Haivision/srt/releases/tag/v1.5.3
This commit is contained in:
parent
f9bba0a9b0
commit
c5e067fb0b
94 changed files with 5974 additions and 6273 deletions
|
@ -69,7 +69,7 @@ struct CSrtConfigSetter<SRTO_MSS>
|
|||
{
|
||||
static void set(CSrtConfig& co, const void* optval, int optlen)
|
||||
{
|
||||
int ival = cast_optval<int>(optval, optlen);
|
||||
const int ival = cast_optval<int>(optval, optlen);
|
||||
if (ival < int(CPacket::UDP_HDR_SIZE + CHandShake::m_iContentSize))
|
||||
throw CUDTException(MJ_NOTSUP, MN_INVAL, 0);
|
||||
|
||||
|
@ -236,6 +236,21 @@ struct CSrtConfigSetter<SRTO_MAXBW>
|
|||
}
|
||||
};
|
||||
|
||||
#ifdef ENABLE_MAXREXMITBW
|
||||
template<>
|
||||
struct CSrtConfigSetter<SRTO_MAXREXMITBW>
|
||||
{
|
||||
static void set(CSrtConfig& co, const void* optval, int optlen)
|
||||
{
|
||||
const int64_t val = cast_optval<int64_t>(optval, optlen);
|
||||
if (val < -1)
|
||||
throw CUDTException(MJ_NOTSUP, MN_INVAL, 0);
|
||||
|
||||
co.llMaxRexmitBW = val;
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
template<>
|
||||
struct CSrtConfigSetter<SRTO_IPTTL>
|
||||
{
|
||||
|
@ -333,7 +348,17 @@ struct CSrtConfigSetter<SRTO_TSBPDMODE>
|
|||
{
|
||||
static void set(CSrtConfig& co, const void* optval, int optlen)
|
||||
{
|
||||
co.bTSBPD = cast_optval<bool>(optval, optlen);
|
||||
const bool val = cast_optval<bool>(optval, optlen);
|
||||
#ifdef SRT_ENABLE_ENCRYPTION
|
||||
if (val == false && co.iCryptoMode == CSrtConfig::CIPHER_MODE_AES_GCM)
|
||||
{
|
||||
using namespace srt_logging;
|
||||
LOGC(aclog.Error, log << "Can't disable TSBPD as long as AES GCM is enabled.");
|
||||
throw CUDTException(MJ_NOTSUP, MN_INVAL, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
co.bTSBPD = val;
|
||||
}
|
||||
};
|
||||
template<>
|
||||
|
@ -502,7 +527,7 @@ struct CSrtConfigSetter<SRTO_CONNTIMEO>
|
|||
if (val < 0)
|
||||
throw CUDTException(MJ_NOTSUP, MN_INVAL, 0);
|
||||
|
||||
using namespace sync;
|
||||
using namespace srt::sync;
|
||||
co.tdConnTimeOut = milliseconds_from(val);
|
||||
}
|
||||
};
|
||||
|
@ -601,7 +626,7 @@ struct CSrtConfigSetter<SRTO_PAYLOADSIZE>
|
|||
|
||||
if (val > SRT_LIVE_MAX_PLSIZE)
|
||||
{
|
||||
LOGC(aclog.Error, log << "SRTO_PAYLOADSIZE: value exceeds SRT_LIVE_MAX_PLSIZE, maximum payload per MTU.");
|
||||
LOGC(aclog.Error, log << "SRTO_PAYLOADSIZE: value exceeds " << SRT_LIVE_MAX_PLSIZE << ", maximum payload per MTU.");
|
||||
throw CUDTException(MJ_NOTSUP, MN_INVAL, 0);
|
||||
}
|
||||
|
||||
|
@ -622,12 +647,22 @@ struct CSrtConfigSetter<SRTO_PAYLOADSIZE>
|
|||
if (size_t(val) > efc_max_payload_size)
|
||||
{
|
||||
LOGC(aclog.Error,
|
||||
log << "SRTO_PAYLOADSIZE: value exceeds SRT_LIVE_MAX_PLSIZE decreased by " << fc.extra_size
|
||||
log << "SRTO_PAYLOADSIZE: value exceeds " << SRT_LIVE_MAX_PLSIZE << " bytes decreased by " << fc.extra_size
|
||||
<< " required for packet filter header");
|
||||
throw CUDTException(MJ_NOTSUP, MN_INVAL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// Not checking AUTO to allow defaul 1456 bytes.
|
||||
if ((co.iCryptoMode == CSrtConfig::CIPHER_MODE_AES_GCM)
|
||||
&& (val > (SRT_LIVE_MAX_PLSIZE - HAICRYPT_AUTHTAG_MAX)))
|
||||
{
|
||||
LOGC(aclog.Error,
|
||||
log << "SRTO_PAYLOADSIZE: value exceeds " << SRT_LIVE_MAX_PLSIZE << " bytes decreased by " << HAICRYPT_AUTHTAG_MAX
|
||||
<< " required for AES-GCM.");
|
||||
throw CUDTException(MJ_NOTSUP, MN_INVAL, 0);
|
||||
}
|
||||
|
||||
co.zExpPayloadSize = val;
|
||||
}
|
||||
};
|
||||
|
@ -883,6 +918,40 @@ struct CSrtConfigSetter<SRTO_RETRANSMITALGO>
|
|||
}
|
||||
};
|
||||
|
||||
#ifdef ENABLE_AEAD_API_PREVIEW
|
||||
template<>
|
||||
struct CSrtConfigSetter<SRTO_CRYPTOMODE>
|
||||
{
|
||||
static void set(CSrtConfig& co, const void* optval, int optlen)
|
||||
{
|
||||
using namespace srt_logging;
|
||||
const int val = cast_optval<int>(optval, optlen);
|
||||
#ifdef SRT_ENABLE_ENCRYPTION
|
||||
if (val < CSrtConfig::CIPHER_MODE_AUTO || val > CSrtConfig::CIPHER_MODE_AES_GCM)
|
||||
throw CUDTException(MJ_NOTSUP, MN_INVAL, 0);
|
||||
|
||||
if (val == CSrtConfig::CIPHER_MODE_AES_GCM && !HaiCrypt_IsAESGCM_Supported())
|
||||
{
|
||||
LOGC(aclog.Error, log << "AES GCM is not supported by the crypto provider.");
|
||||
throw CUDTException(MJ_NOTSUP, MN_INVAL, 0);
|
||||
}
|
||||
|
||||
if (val == CSrtConfig::CIPHER_MODE_AES_GCM && !co.bTSBPD)
|
||||
{
|
||||
LOGC(aclog.Error, log << "Enable TSBPD to use AES GCM.");
|
||||
throw CUDTException(MJ_NOTSUP, MN_INVAL, 0);
|
||||
}
|
||||
|
||||
co.iCryptoMode = val;
|
||||
#else
|
||||
LOGC(aclog.Error, log << "SRT was built without crypto module.");
|
||||
throw CUDTException(MJ_NOTSUP, MN_INVAL, 0);
|
||||
#endif
|
||||
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
int dispatchSet(SRT_SOCKOPT optName, CSrtConfig& co, const void* optval, int optlen)
|
||||
{
|
||||
switch (optName)
|
||||
|
@ -940,6 +1009,12 @@ int dispatchSet(SRT_SOCKOPT optName, CSrtConfig& co, const void* optval, int opt
|
|||
DISPATCH(SRTO_IPV6ONLY);
|
||||
DISPATCH(SRTO_PACKETFILTER);
|
||||
DISPATCH(SRTO_RETRANSMITALGO);
|
||||
#ifdef ENABLE_AEAD_API_PREVIEW
|
||||
DISPATCH(SRTO_CRYPTOMODE);
|
||||
#endif
|
||||
#ifdef ENABLE_MAXREXMITBW
|
||||
DISPATCH(SRTO_MAXREXMITBW);
|
||||
#endif
|
||||
|
||||
#undef DISPATCH
|
||||
default:
|
||||
|
@ -987,7 +1062,7 @@ bool SRT_SocketOptionObject::add(SRT_SOCKOPT optname, const void* optval, size_t
|
|||
case SRTO_PEERIDLETIMEO:
|
||||
case SRTO_RCVBUF:
|
||||
//SRTO_RCVSYN - must be always false in groups
|
||||
//SRTO_RCVTIMEO - must be alwyas -1 in groups
|
||||
//SRTO_RCVTIMEO - must be always -1 in groups
|
||||
case SRTO_SNDBUF:
|
||||
case SRTO_SNDDROPDELAY:
|
||||
//SRTO_TLPKTDROP - per transmission setting
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue