| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Can be helpful to see what encodings were actually used during a
connection, and how they performed.
|
|
|
|
|
|
| |
macOS' built in VNC server unfortunately sends the entire monitor in a
single rect, so we need to be prepared to buffer a lot of data in case
the monitor has a large resolution.
|
|
|
|
| |
Gives a bit more context where this error happened.
|
|
|
|
|
| |
Single CPU machines are extremely rare now, so let's avoid the hassle of
multiple code paths.
|
|\ |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
The certificates might still be fine using the system trust store, or
the user can make an exception. So let's just log and continue on.
This got very common after 960c7d2 where we now always have a default
value for these settings.
|
|/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes regression introduced by the extended clipboard extension.
Previously it was possible for the server to hold on to the CLIPBOARD
selection even if another application took ownership of PRIMARY. This is
important to handle the common use case of selecting something in order
to paste over it.
The new request based model doesn't readily support this as we assume
the client has lost its data once we push the new PRIMARY selection to
it. So to handle this we have the maintain a cache of the client's data,
and make sure to fill that cache before we do anything that might cause
the client to lose the data.
|
|
|
|
|
| |
The call of gnutls_set_default_priority_append() expects a normal priority
string, which means it must not start with ':'.
|
|\ |
|
| | |
|
|\ \ |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
Let's avoid making this too complex and force every user to know about
magical functions.
|
| | |
| | |
| | |
| | |
| | | |
Allows the default value to be dynamically generated in a buffer that is
reused.
|
|/ / |
|
| |
| |
| |
| |
| | |
Our current architecture doesn't support waiting for a response here, so
don't even try or we'll just get an error.
|
| |
| |
| |
| |
| | |
The session might have died, or failed to initialise properly, so be
prepared for gnutls_bye() to be unable to do its job.
|
| |
| |
| |
| |
| |
| | |
We would leak the security module below the top client VeNCrypt module,
meaning that those modules would not get a chance to shut down
gracefully.
|
| |
| |
| |
| |
| | |
It's perfectly safe to delete NULL pointers, so simplify things by
removing these checks.
|
| |
| |
| |
| |
| | |
Gives us a more meaningful error rather than just "Error in push/pull
function".
|
| |
| |
| |
| |
| |
| |
| | |
Having this early check means that we somewhat randomly get different
exception behaviours on errors in deeper layers as some exceptions are
allowed to propagate unhindered and some are not (since they are thrown
in the pull function).
|
| |
| |
| |
| |
| | |
Give GnuTLS the correct errno from deeper layers, in the cases where we
know it. In most cases GnuTLS doesn't care, but just in case...
|
|/
|
|
|
|
|
|
| |
CharArray should always be null-terminated. There is a potential
scenario where this all might lead to crash. In Password we call
memset(), passing length of the array we get with strlen(), but
this won't return correct value when the array is not properly
null-terminated.
|
|\ \
| | |
| | |
| | | |
'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.
|