You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The internal rules to calculate the maximum payload size for the SRT packet are largely based on the size of 28, which is 8 bytes for UDP header and 20 bytes for the IPv4 header (as mentioned in #2662). This calculation doesn't apply to IPv6, however.
Affected are:
The SRT_LIVE_MAX_PLSIZE constant in srt.h header
The CUDT::m_iMaxSRTPayloadSize field, which is used also to calculate the allocation size for the packet's payload
Potential problem: Sending a file over IPv6, which is the case when the maximum SRT payload size is used, may set an oversize to an MTU because it is assumed that the maximum UDP payload is 1492, while for IPv6 it's 1460 for the standard 1500 MTU. The live mode is unaffected only because it has the 1316 payload size, which fits in both IPv4 and IPv6 frames.
Potential solution: The CUDT::open() function is called everywhere in conditions where the expected (although not always already allocated) socket family is already known. This family identifier must be passed to it, and then down to CUDT::clearData so that the correct maximum payload size depending on the IP version is defined.
The text was updated successfully, but these errors were encountered:
The internal rules to calculate the maximum payload size for the SRT packet are largely based on the size of 28, which is 8 bytes for UDP header and 20 bytes for the IPv4 header (as mentioned in #2662). This calculation doesn't apply to IPv6, however.
Affected are:
SRT_LIVE_MAX_PLSIZE
constant insrt.h
headerCUDT::m_iMaxSRTPayloadSize
field, which is used also to calculate the allocation size for the packet's payloadPotential problem: Sending a file over IPv6, which is the case when the maximum SRT payload size is used, may set an oversize to an MTU because it is assumed that the maximum UDP payload is 1492, while for IPv6 it's 1460 for the standard 1500 MTU. The live mode is unaffected only because it has the 1316 payload size, which fits in both IPv4 and IPv6 frames.
Potential solution: The
CUDT::open()
function is called everywhere in conditions where the expected (although not always already allocated) socket family is already known. This family identifier must be passed to it, and then down toCUDT::clearData
so that the correct maximum payload size depending on the IP version is defined.The text was updated successfully, but these errors were encountered: