We see an occasional problem during our boot process where a daemon, which is using the uc_nl_request call in lib_rtnl.c, fails to get a valid reply - in our case we are reading an interface list. We think that the socket is opened correctly (~line 3477) but then fails. However, once in this failed state there is no way to reopen it as it is cached internally and will continue to fail. The only fix we've found is to restart our daemon.
We'd be happy to write a PR but are not sure what solution you'd prefer? We could do away with the socket cache entirely, or we could try to close it on any error.
We see an occasional problem during our boot process where a daemon, which is using the uc_nl_request call in lib_rtnl.c, fails to get a valid reply - in our case we are reading an interface list. We think that the socket is opened correctly (~line 3477) but then fails. However, once in this failed state there is no way to reopen it as it is cached internally and will continue to fail. The only fix we've found is to restart our daemon.
We'd be happy to write a PR but are not sure what solution you'd prefer? We could do away with the socket cache entirely, or we could try to close it on any error.