| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Don't assume a lack of TCP listeners means the server will be
unreachable. There might be other methods of access, so let the higher
levels do that sanity check instead.
|
|
|
|
|
| |
It is more specific, and it properly sets up propagation when include
directories also need to be used further down a dependency chain.
|
|
|
|
|
| |
This is important in case there are build flags that need to propagate
between libraries for things to build correctly.
|
|
|
|
|
| |
This matches the naming in STL, which is what we are mostly mimicing now
that we are using std::string for these functions.
|
|
|
|
|
| |
Let's use a more common type instead of something homegrown. Should be
more familiar to new developers.
|
|
|
|
|
|
|
| |
Get rid of all the magical re-allocation and shuffling and instead just
return a new set of strings that is fully splitted. Will consume a bit
more memory, but is a lot safer to use as there is less confusion about
ownership of memory.
|
|
|
|
|
|
| |
We mostly use classical C strings, but the memory management around them
can get confusing and error prone. Let's use std::string for the cases
where we need to return a newly allocated string.
|
|
|
|
|
|
| |
A blank string might be very confusing, depending on where this will be
used. Let's give something more visible back in the cases where we
cannot get the proper name for the peer.
|
|
|
|
|
|
|
|
|
| |
This mimics how some system functions (like inet_ntop()) work, and
avoids complexity around ownership of the returned string buffer.
The downside is that the string must be consumed directly as it will be
overwritten on the next call, but that is not an issue with the current
usage.
|
|
|
|
|
| |
Avoid complicating things by moving things in to a second buffer here as
there is no need for it.
|
|
|
|
|
| |
Modern cmake has better support for adding source files and libraries
incrementally, so let's use that to clean things up.
|
|\ |
|
| |
| |
| |
| |
| | |
The principle can be used in a more general fashion than just TCP
streams.
|
| |
| |
| |
| | |
For readability.
|
| |
| |
| |
| |
| | |
We handled this in the failure scenario, but not in the vastly more
common successful case.
|
|/ |
|
|
|
|
|
|
|
|
| |
Created a new subclass of Exception called GAIException() that will
handle error messages from getaddrinfo() instead of letting Exception()
handle it. GAIException() will make use of gai_strerror() to map the
error code to text. On Windows, gai_strerrorW() must be used if the text
is encoded with UTF-8.
|
| |
|
|\ |
|
| | |
|
| |
| |
| |
| |
| |
| | |
It doesn't belong on each socket server object as timers are global.
Force implementations to call the Timer system directly instead,
avoiding any middle men.
|
|/
|
|
|
| |
It is functionality specific to WinVNC, so move the code there
to make things more clear.
|
| |
|
| |
|
|
|
|
| |
Patch originally by Dag-Erling Smørgrav for University of Oslo.
|
|
|
|
|
| |
Makes the code more general and not directly tied to specifically
TCP sockets.
|
|
|
|
|
|
| |
This makes it possible to create a derived class from Socket which is
not TCP based, without having VNCSConnectionST.cxx trying to call
setsockopt() on a non-socket.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix warnings emitted by Clang:
/home/shade/dev/tigervnc/common/rdr/FdInStream.h:30:9: error: 'rdr::FdInStreamBlockCallback' has virtual functions but non-virtual destructor [-Werror,-Wnon-virtual-dtor]
class FdInStreamBlockCallback {
^
In file included from /home/shade/dev/tigervnc/common/network/TcpSocket.cxx:44:
In file included from /home/shade/dev/tigervnc/common/network/TcpSocket.h:31:
/home/shade/dev/tigervnc/common/network/Socket.h:82:9: error: 'network::ConnectionFilter' has virtual functions but non-virtual destructor [-Werror,-Wnon-virtual-dtor]
class ConnectionFilter {
^
..etc
|
|
|
|
|
| |
Any caller using add or remove should also be able to list the
sockets.
|
|
|
|
|
|
| |
What to do when a socket is writeable should be handled in the
RFB core code as there may be other events we want to fire off
when this happens.
|
|
|
|
|
|
| |
The previous detection would fail if the socket closed before we
had time to inspect it, which got us stuck in a loop as we would
try (and fail) to do accept() on a non-listening socket.
|
|
|
|
|
|
| |
Parsing a filter might be the first thing we do so we need to
make sure the socket subsystem is running so that we can look
up names.
|
|
|
|
|
|
| |
It is easier to control object life time and avoid magical socket
duplication by having a single TcpListener object to pass around.
We have to be more careful about deleting the object though.
|
|
|
|
|
| |
Closing the socket might overwrite errno so we need to save
its value.
|
| |
|
| |
|
|
|
|
|
| |
The logic was flawed and would treat all connect errors as
if there were no addresses found.
|
| |
|
|
|
|
|
| |
SO_REUSEADDR needs to be set before we call bind() for it to have
any effect. It got shuffled around in e4d9726.
|
|
|
|
|
| |
Every reasonably current system support getaddrinfo() so get rid
of the legacy fallbacks.
|
| |
|
|
|
|
| |
It doesn't work on sockets, which require a bit more care.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
It is needed by WinVNC, but got removed in 892d10a70. Also fix
a couple of issues:
- Use getnameinfo() in order to be compatible with Windows XP
- Make it static since it doesn't use a specific socket
- Respect UseIPv4 and UseIPv6
- Flags for getaddrinfo() that match binding code
- Dummy service value for Windows compatibility
|
| |
|
| |
|
| |
|
| |
|
| |
|