I believe this code is redundant: when a connection/session is not used for > session timeout, it's reliably destroyed via ACM, so we don't need this extra thread. Worse, starting this thread when session timeout is > 0 is confusing since it gives the impression configuring session timeout instead of ACM has a special behavior.
Glacier2's SessionRouter starts a "session thread" when the session timeout is > 0.
This background thread destroys sessions that have been idle for too long: https://github.com/zeroc-ice/ice/blob/badafe8b848181a720ab96b48da6abc170fd918c/cpp/src/Glacier2/SessionRouterI.cpp#L1331 https://github.com/zeroc-ice/ice/blob/badafe8b848181a720ab96b48da6abc170fd918c/cpp/src/Glacier2/SessionRouterI.cpp#L1074
I believe this code is redundant: when a connection/session is not used for > session timeout, it's reliably destroyed via ACM, so we don't need this extra thread. Worse, starting this thread when session timeout is > 0 is confusing since it gives the impression configuring session timeout instead of ACM has a special behavior.
See also #642.