AirenSoft/OvenMediaEngine

SRT Provider fails to bind IPv6 in 0.15.10

getroot opened this issue · 6 comments

I believe i found the issue on my configuration:

<Server>
  <IP>*</IP>
  <IP>::</IP>
</Server>

I have to test it, it everything works fine, now.

no idea why it works on:

  • on v0.15.9 works with (without SRT and with http-websocket).
  • on v0.15.10 it fails also on http-websocket setup (and enabled SRT).

so change after everythink the following (with SRT and http-websocket) on v0.15.10 everything start up like expected:

<Server>
  <IP>*</IP>
</Server>

Originally posted by @genofire in #1095 (reply in thread)

@genofire I have created a new issue. If you attach the logs of 0.15.9 and 0.15.10 it will help to solve the problem.

To enable OME for both IPv4 and IPv6, socket creation, binding, and listening are performed for each respective socket family. To achieve this, the IPV6_V6ONLY option of the socket is used, and it works fine without any issues.

However, it seems that the SRTO_IPV6ONLY option, which is expected to perform the same function in SRT, is not functioning properly. Specifically, when this option is set and only an IPv4 address is used for listening, checking with netstat shows that it is bound only to the IPv4 address. Consequently, attempting to bind and listen on the same port with an IPv6 address results in an error, causing OME not to execute.

I have searched for possible solutions in the current version of SRT, which is 1.5.1, and previous versions, but I couldn't find an easy way to resolve this. Fortunately, it seems that this issue has been resolved in the latest version of SRT 1.5.2-rc.2. Therefore, I recommend updating the SRT_VERSION variable in prerequisites.sh from SRT_VERSION=1.5.1 to SRT_VERSION=1.5.2-rc.2 and executing prerequisites.sh again before compling OME.