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

[pull] master from TigerVNC:master #78

Open
wants to merge 193 commits into
base: master
Choose a base branch
from
Open

[pull] master from TigerVNC:master #78

wants to merge 193 commits into from

Conversation

pull[bot]
Copy link

@pull pull bot commented Apr 10, 2024

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

62832 and others added 2 commits March 15, 2024 22:00
That extra add_fd() only set the read notification, overwriting any
write notification set up in the lines just above.
@pull pull bot added the ⤵️ pull label Apr 10, 2024
CendioOssman and others added 27 commits April 10, 2024 12:40
FLTK can send events with fl_xevent pointing to random memory, which
means that we cannot trust that structure. XQueryPointer() can give us
what we need, at the cost of an extra round trip.
They must belong to the rfb namespace, not to the SConnection class.

Also add an AccessNone constant, since it's better to use a mnemonic
symbol rather than zero to initialize the accessRights members.

Signed-off-by: Carlos Santos <casantos@redhat.com>
Make it easier to work iteratively by not having to remove the output
file each time.
The norm is that the install target is read only from the point of view
of the source and build directory, so avoid accidentally triggering any
build.
Move these RFB specific things to rfb::VNCServer, for clarity.

Signed-off-by: Pierre Ossman <ossman@cendio.se>
Signed-off-by: Carlos Santos <casantos@redhat.com>
Specifies that the server must ignore all keyboard or mouse events sent
by the client.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2180903
Signed-off-by: Carlos Santos <casantos@redhat.com>
Allow for alternative user config locations, deprecate `~/.vnc` in favour of XDG Base Directory Specification paths
It's perfectly fine to give a NULL pointer if the length has explicitly
been specified as zero.
There is too much variation between distributions for us to have a good
PAM configuration that works everywhere. Try to make this more obvious
by having a comment at the top of the file.
E.g. pam_env.so might modify this variable, so we should see what we get
out of PAM when building a log file path.
The syslog file descriptor will be closed when we are cleaning up in
preparation for running the vncserver script, so we need to explicitly
reopen things in case we need to log errors.

At the same time, try to be polite and explicitly close the log when
appropriate.
This is only needed because of an historical type change of the legacy
directory, so avoid doing it anywhere else.
This is an often changed database, so it is better suited for
$XDG_STATE_HOME rather than the more static $XDG_DATA_HOME.
Avoid duplicating this complexity in too many places.

At the same time make the interface more identical to regular mkdir(),
for familiarity.
Repeating a timer can be done in two ways:

 * Returning true from the handler
 * Calling start() again in the handler

The latter is useful if you want to change the timer interval.

If both are used, then it becomes ambiguous when the timer should fire
again.

Detect this case and warn about it. Current implementation will respect
the new interval given to start(), rather than the interval set before
running the handler.
This should have been done in a4308c9.
It is much more sane to treat "0" as "a timer is ready NOW", so let's
change to using -1 as the invalid timeout value.
It currently won't ever be called with an empty list of timers, but it
is a public function so that might happen in the future. Make sure this
case is handled without crashes.
They were badly formatted, way longer than the normal 72 columns.
One-shot timers are more common, so let's change the API a bit to make
that use case simpler. This API also makes it more clear what is
happening.
samhed and others added 30 commits October 1, 2024 13:44
Commit 8a80c90 added a check to prevent
announcing clipboard when it's not plain text data. When this check
triggers and we want to ignore the non-plain text clipboard, we should
reset the state by no longer indicating pending clipboard, and by asking
the server to clear its clipboard. This ensures we don't end up in a
state where the server thinks the viewer has useful clipboard data, but
it doesn't.
Socket APIs are used in more places than the abstraction in
common/network. Make it easier to use this exception class by putting
it in a more common place.
The behaviour is not consistent as Windows doesn't use errno for socket
errors, but Unix systems do. Always use the same exception to keep
things somewhat sane.
Windows has (at least) two error namespaces, both errno and
GetLastResult(). These overlap, so it is important we keep track of
which one we are dealing with.

To make things extra problematic, the BSD socket API normally uses
errno, but on Windows it has been mapped in to the GetLastResult()
namespace.

Try to keep better control of this by using separate classes for the
namespaces.
Fixed so config variables can pass an empty argument.

Solves issue #1791.
We seem to have gotten this implicitly before, but now that GitHub has
switched to Ubuntu 24.04 we have to be explicit about it.
Otherwise the compiler will complain about a defined but unused static
function.
Avoid duplicating this parsing as that will just increase the risk for
bugs. And in fact, this duplicated code already does not handle all
cases properly.
It seems XGetClassHint() doesn't set the pointers to NULL if there is no
name, so we need to make sure it is cleared beforehand. Otherwise we can
get an invalid pointer given to XFree().
These are generated during the cmake stage, but cmake thinks they are
generated during the build stage because of our rule to update the
timestamp on them. As a result, it thinks they should be removed when
doing "make clean".

There doesn't seems to be an easy way to tell cmake to leave these
alone. So instead, point cmake to a different marker file when updating
the timestamps. We don't care if that gets removed as it has no valuable
contents.
The UserDialog object is now only created for a single connection at a
time, which means we need to make sure the cached username and password
survive until the subsequent object.
The sentence was also restructured a bit to improve the flow.
These seem to always be in ASCII and English, unfortunately, but let's
at least use the API the could give use something more useful.
In preparation for using the built in C++ exception classes, which do
not accept a format string.
In preparation for using the built-in exception types, where the string
can only be set via the constructor.
Harmonize with the standard C++ exceptions.
Make sure our exceptions are part of the standard exception class
hierarchy.
Implicitly gives us the correct exceptions on errors instead of us
having to check and throw ourselves.
Use the more specific already included exception classes for common
errors to keep things more understandable.
Make it easier to identify communication issues.
There is no point to having our own generic exception class. Let's use
the one provided by the standard C++ library.
Make sure the required Windows defines are always available.
This makes things more consistent since we mix with the standard library
exceptions so often.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.