Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Window size can become incorrect #1874

Closed
russjones opened this issue Apr 13, 2018 · 0 comments
Closed

Window size can become incorrect #1874

russjones opened this issue Apr 13, 2018 · 0 comments
Assignees
Labels

Comments

@russjones
Copy link
Contributor

russjones commented Apr 13, 2018

Problem

When using DynamoDB as the backend, changing the size of a terminal window (on Linux) quickly will cause the terminal size to go out of sync. Resizing it by one row or line will correct the size.

This is because every row/line change causes a "window-change" request to be issued to Teleport. Teleport keeps track of all active sessions with the party members and terminal size. When using DynamoDB not only does every window change need to be propagated to DynamoDB due to read consistency issues, the size of the PTY can go out of sync.

Solution

This problem needs to be solved in different ways for regular Teleport and the recording proxy.

Regular Teleport

For regular Teleport, the reason the backend keeps track of the window size is for session sharing because if another member of the party resizes their PTY (which resizes the remote PTY) this needs to be reflected in the terminal size of all the other members of the party.

For window size the node has a consistent view of what size was requested of it. Instead of storing the window size upon each change in the backend, the sever can push the window size back to the other members of the party. This can be done with a special x-teleport-window-change global request from the server to the client using the already existing connection.

Recording Proxy

Because session sharing is always disabled for the recording proxy, the PTY size never needs to be propagated back to the client because the client is the only one that can change the size of the remote PTY.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants