[MAINT] Check if listener events are properly set on a group also when accepting sockets over different listeners #1635
Labels
[core]
Area: Changes in SRT library core
Type: Maintenance
Work required to maintain or clean up the code
Milestone
There's a part of the group code where it is intended to subscribe for epoll events for listening.
Likely it was intended to make it possible to interrupt waiting for a lingering connection, while a new connection was reported at the same time and this should make the group reader interrupt waiting, add this socket to the list of candidates, and continue waiting, possibly this time finding the new connection delivering data.
The code contains a registered listener socket that is only checked this time, so it's not set anew when this is the first socket accepted off given listener; for next it will see the listener set and skip it. But then, it will skip this step also in case when a new socket was accepted off a different listener, which means that waiting won't be interrupted if a new socket is accepted off a different listener than the one of the very first socket accepted for this group.
This could be a problem for backup groups - in case of broadcast groups they are intended to deliver data all the time over every link, so interrupting the wait call will happen by different reasons, but still early enough. Backup groups may experience hanging in reading function due to that the waiting function is unaware of that another connection in the same group is ready to deliver data, while the other connection went silent.
The text was updated successfully, but these errors were encountered: