Minor Changes
-
#320
b6cbe29Thanks @st4inl3s5! - A session can now be given its own idle timeout, per call, and0means "no
cap" for the session timeouts in the config.open-sessionacceptsttlMs. It may shorten the profile's idle timeout for
that session. It may lengthen it only up to a ceiling the operator already set:
sessionBackgroundMaxMsfor a background session. Where that cap is0, the
ceiling is the profile's ownsessionIdleTimeoutMs, since turning the absolute
cap off does not turn the idle timeout off. An interactive session has no
absolute cap, so its ceiling is always the profile's ownsessionIdleTimeoutMs. A call
above the ceiling is refused, and the refusal names the ceiling. A call cannot
ask for0: the timeout is the operator's control, and the agent can narrow
what the operator allows but not widen it.sessionIdleTimeoutMs/sessionBackgroundMaxMsin the config file, and
--sessionTtl, now accept0= no cap. This is the spelling
commandMaxCharsandcommandQuotaPerDayalready use.The comparisons behind it were bare
>, which read a literal 0 as "expire
immediately" — the opposite of the request — andparseInt(x) || defaultturned
--sessionTtl=0back into the 10-minute default, because 0 is falsy, not
invalid.
Patch Changes
-
#319
62fd3bbThanks @st4inl3s5! - Reading a live session now counts as activity.lastActivityonly moved when the channel produced a byte, so a background
command whose output is redirected to a file — the normal way to run a long job
— froze its idle clock at creation. A caller polling such a session every minute
was indistinguishable from one that had walked away, and the idle reaper closed
the session (and signalled the command) at exactly the timeout: measured at
10m22s and 10m56s against a real host with the default 10-minute TTL, while the
job was being read every 90 seconds.