| Commit message (Collapse) | Author | Age | Files | Lines |
|\ \
| | |
| | |
| | | |
'vmware-cursor-position-vncviewer' of https://github.com/lhchavez/tigervnc
|
| |/
|/|
| |
| |
| |
| |
| |
| | |
This change makes it possible for re-synchronizing the remote cursor on
the vncviewer when in fullscreen mode. This is done by locally moving
the cursor position to what the server thinks it should be.
Now SDL games should work!
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change adds support for the VMware Mouse Position
pseudo-encoding[1], which is used to notify VNC clients when X11 clients
call `XWarpPointer()`[2]. This function is called by SDL (and other
similar libraries) when they detect that the server does not support
native relative motion, like some RFB clients.
With this, RFB clients can choose to adjust the local cursor position
under certain circumstances to match what the server has set. For
instance, if pointer lock has been enabled on the client's machine and
the cursor is not being drawn locally, the local position of the cursor
is irrelevant, so the RFB client can use what the server sends as the
canonical absolute position of the cursor. This ultimately enables the
possibility of games (especially FPS games) to behave how users expect
(if the clients implement the corresponding change).
Part of: #619
1: https://github.com/rfbproto/rfbproto/blob/master/rfbproto.rst#vmware-cursor-position-pseudo-encoding
2: https://tronche.com/gui/x/xlib/input/XWarpPointer.html
3: https://hg.libsdl.org/SDL/file/28e3b60e2131/src/events/SDL_mouse.c#l804
|
|
|
|
|
| |
This reverts commit d6e39658ae105fca2cfe37ba736dbf0e8d8356af. Apparently
this is broken on macOS so it's not something we can make use of.
|
|
|
|
|
|
|
|
| |
Some of these were incorrectly calculated so the server or client would
wait too long before proceeding with decoding.
Change all of these to be a more explicit calculation to avoid such
issues in the future.
|
|
|
|
| |
TCP_CORK is a Linux thing and BSD has TCP_NOPUSH instead.
|
|
|
|
|
| |
We didn't include the proper headers to get the correct define, so
corking was never enabled.
|
|\ |
|
| |
| |
| |
| |
| | |
So the current clipboard state is properly reflected in the desktop
session.
|
| | |
|
| |
| |
| |
| | |
This was out of sync with the client handling for no good reason.
|
| |
| |
| |
| |
| | |
The peer expects a response, so we should also be able to respond that
there is no clipboard data currently available.
|
| |
| |
| |
| |
| |
| | |
The extended clipboard protocol has the ability for the peer to request
things to be sent automatically, without a request message. Make sure we
honor such settings.
|
| | |
|
| | |
|
| | |
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Major restructuring of how streams work. Neither input nor output
streams are now blocking. This avoids stalling the rest of the client or
server when a peer is slow or unresponsive.
Note that this puts an extra burden on users of streams to make sure
they are allowed to do their work once the underlying transports are
ready (e.g. monitoring fds).
|
| | |
| | |
| | |
| | |
| | | |
These are not universal in the protocol so having functions for them
only obfuscates things.
|
| | |
| | |
| | |
| | |
| | | |
The specification only states a single result byte and not any reason
after a TLS authentication failure.
|
| | |
| | |
| | |
| | |
| | |
| | | |
Now measures over an entire update, which should hopefully give us more
stable values. They are still small values for fast networks though so
increase precision in the values we keep.
|
| | |
| | |
| | |
| | |
| | | |
Provide some safety checks when directly accessing the underlying
pointer of streams.
|
| | |
| | |
| | |
| | |
| | |
| | | |
Some systems (like TLS) need to send some final data before closing
a connection. Make sure this is properly handled by cleaning up the
security object before closing the underlying network socket.
|
| | | |
|
| | |
| | |
| | |
| | | |
Otherwise we might send duplicate result codes and other weird things.
|
| | |
| | |
| | |
| | |
| | | |
External callers don't need to know the exact details, only if there is
data that needs to be flushed or not.
|
| | |
| | |
| | |
| | |
| | | |
This allows us to handle peaks in input and output streams gracefully
without having to block processing.
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
The principle can be used in a more general fashion than just TCP
streams.
|
| | | |
|
| | |
| | |
| | |
| | | |
We can do what we want with the standard methods.
|
| | |
| | |
| | |
| | |
| | | |
Just have a simply number of bytes argument to avoid a lot of
complexity.
|
| | |
| | |
| | |
| | |
| | | |
Most streams are backed by a memory buffer. Create common base classes
for this functionality to avoid code duplication.
|
| | |
| | |
| | |
| | |
| | | |
Makes it more readable to write code that needs to know how much
data/space is available in a stream.
|
| | |
| | |
| | |
| | |
| | | |
It might leak data depending on what's in the buffer. Use pad() instead
where blank space is needed.
|
| | |
| | |
| | |
| | |
| | | |
They were accidentally left unused in fbad8a9 so they haven't been used
in some time.
|
| | |
| | |
| | |
| | | |
We need to be able to tell this exception came from a decoder.
|
| | |
| | |
| | |
| | | |
For readability.
|
| | |
| | |
| | |
| | |
| | | |
There might be some final handshake data that is still stuck in the
buffers, so make a best effort attempt at getting it to the client.
|
| | |
| | |
| | |
| | |
| | | |
The socket is closed at this point so we have to rely on a cached
value for the logging.
|
| | |
| | |
| | |
| | |
| | | |
It's a generic feature that is better handled as part of SConnection's
state machine.
|
| | |
| | |
| | |
| | |
| | |
| | | |
We can't safely use the normal timers in base classes as we cannot
guarantee that subclasses will call the base class' handleTimeout()
properly if the subclass overrides it.
|
| |/
|/|
| |
| |
| |
| | |
We computed a safe area if a client gave us a bogus one, but we didn't
actually use it. Fix this properly and make sure we don't pass on bad
coordinates further.
|
| |
| |
| |
| |
| | |
Each character is more than one byte, so adjust the clearing of the
buffer to reflect that.
|
| |
| |
| |
| |
| | |
Some code points are reserved for the UTF-16 coding itself and must not
appear as input data to the algorithm.
|
| |
| |
| |
| | |
Signed bug prevented anything not ASCII from being coded correctly.
|
| |
| |
| |
| |
| | |
Everything outside of BMP was handled incorrectly and was coded as
completely different code points.
|
| |
| |
| |
| |
| |
| |
| |
| | |
This would mess up most conversions from UTF-8 as the caller wouldn't
know how far to step to get to the next valid character, resulting in
markers for invalid data to be injected here and there.
Also add some unit tests to avoid this reoccurring.
|
|\ \ |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The previous method stored the certificates as authorities, meaning that
the owner of that certificate could impersonate any server it wanted
after a client had added an exception.
Handle this more properly by only storing exceptions for specific
hostname/certificate combinations, the same way browsers or SSH does
things.
|