Skip to content

Upterm 0.40.0

Latest

Choose a tag to compare

@owenthereal owenthereal released this 26 Oct 23:27
v0.40.0
453a872

v0.40.0 completes the move of per-run settings to command-line flags announced in v0.39.0, and fixes guests that left with an empty screen, a Linux session cleanup hang, and several relay shutdown and session-tracking problems.

Per-run settings are now command-line only

  • The environment variables and config keys deprecated in v0.39.0 are now ignored by the commands listed below; pass the flag instead. Each ignored setting prints one warning naming its replacement, for example upterm: ignoring UPTERM_JOIN_TIMEOUT for upterm session set; pass --join-timeout. An explicit flag still works, and silences the warning for the setting it overrides. #677
Environment variable / config key Ignored by Use instead
UPTERM_OUTPUT / output host, session info, session current -o / --output
UPTERM_NAME / name host --name
UPTERM_DETACH / detach host --detach
UPTERM_WAIT / wait join --wait
UPTERM_JOIN_TIMEOUT / join-timeout session set --join-timeout
  • host --join-timeout, UPTERM_ADMIN_SOCKET and other standing settings still read env/config. upterm config edit reports the ignored keys as notices rather than errors.

Fixes

  • A guest whose input ends right after it joins, such as ssh -tt … < /dev/null or a client with no stdin, now receives the session's screen before its exit status. Previously it often got a clean exit and nothing on its screen. #693
  • On Linux, a client's input still being written to the terminal after the command exited could leave that session's handlers running. The write is now interrupted when the session closes. #686
  • uptermd now exits 1 and names the file when a configured private key can't be read. Previously it exited 0 without serving. #678
  • Relays that track sessions in Consul, including the public relay, have these fixes:
    • Shutdown: it now waits for in-flight SSH requests and lease releases before closing the session store, and reports a shutdown that didn't finish. #682, #690, #696
    • Ended sessions: a session that has just ended can no longer reappear in the relay's routing from an older copy of the store. #698
    • Reconnects: when a reconnecting host's registration has gone missing from the store, the relay re-registers it straight away instead of waiting for the next renewal. #700

Exit status change for scripts

  • upterm proxy returns 1 when the relay closes the connection or a read or write fails, even if ssh also reached end of input. Previously whichever result came first decided. Errors from proxy's own cleanup don't change the result. #687

Compatibility

No protocol or JSON output changes: v0.40.0 clients work with older relays, and older clients work with the updated relay. For Go callers, io.ReplayBudget is now read once when each Server starts.

Changelog