aboutsummaryrefslogtreecommitdiffstats
path: root/common/network
Commit message (Collapse)AuthorAgeFilesLines
* Remove the network::SocketServer interface.Carlos Santos2024-04-261-35/+0
| | | | | | | 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>
* More graceful handling of disabled listenersPierre Ossman2023-09-081-4/+0
| | | | | | 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.
* Prefer target_include_directories()Pierre Ossman2023-03-311-2/+1
| | | | | It is more specific, and it properly sets up propagation when include directories also need to be used further down a dependency chain.
* Add all common inter-dependenciesPierre Ossman2023-03-311-0/+2
| | | | | This is important in case there are build flags that need to propagate between libraries for things to build correctly.
* Remove "str" prefix from string helpersPierre Ossman2023-02-041-2/+2
| | | | | This matches the naming in STL, which is what we are mostly mimicing now that we are using std::string for these functions.
* Use std::string instead of CharArrayPierre Ossman2023-02-041-0/+1
| | | | | Let's use a more common type instead of something homegrown. Should be more familiar to new developers.
* Make strSplit() simpler and saferPierre Ossman2023-02-041-22/+21
| | | | | | | 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.
* Return std::string instead of dynamic allocationsPierre Ossman2023-02-042-9/+17
| | | | | | 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.
* Better fallback for missing peer addressPierre Ossman2023-02-041-3/+3
| | | | | | 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.
* Return static char buffer from some methodsPierre Ossman2023-02-045-33/+30
| | | | | | | | | 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.
* Remove unneeded CharArray:sPierre Ossman2023-02-041-12/+9
| | | | | Avoid complicating things by moving things in to a second buffer here as there is no need for it.
* Avoid temporary cmake variablesPierre Ossman2022-06-071-4/+2
| | | | | Modern cmake has better support for adding source files and libraries incrementally, so let's use that to clean things up.
* Merge branch 'noblock' of https://github.com/CendioOssman/tigervncPierre Ossman2021-01-196-23/+6
|\
| * Generalise corking to all output streamsPierre Ossman2020-05-215-21/+1
| | | | | | | | | | The principle can be used in a more general fashion than just TCP streams.
| * Use proper constants for socket shutdown()Pierre Ossman2020-05-211-2/+5
| | | | | | | | For readability.
* | Free memory from getaddrinfo()Pierre Ossman2020-08-171-0/+2
| | | | | | | | | | We handled this in the failure scenario, but not in the vastly more common successful case.
* | Correction to socket error connection messageAndrew Yoder2020-07-151-1/+1
|/
* Throw GAIException() for getaddrinfo errorsAlex Tanskanen2020-03-171-6/+3
| | | | | | | | 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.
* Fix typo in SocketException messageAlex Tanskanen2020-03-121-1/+1
|
* Merge branch 'covscan' of https://github.com/grulja/tigervncPierre Ossman2018-11-211-1/+1
|\
| * Use empty address buffer when sockaddr sa_family is not what we wantJan Grulich2018-09-261-1/+1
| |
* | Get rid of SocketServer::checkTimeouts()Pierre Ossman2018-11-091-7/+0
| | | | | | | | | | | | 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.
* | Move ListConnInfo to WinVNC directoryPierre Ossman2018-11-091-2/+0
|/ | | | | It is functionality specific to WinVNC, so move the code there to make things more clear.
* Merge common socket codePierre Ossman2018-05-297-216/+255
|
* Remove unused code from socket classesPierre Ossman2018-05-295-109/+24
|
* Add support for Unix socketsPierre Ossman2018-05-293-1/+327
| | | | Patch originally by Dag-Erling Smørgrav for University of Oslo.
* Use abstract SocketListener classPierre Ossman2018-05-043-8/+11
| | | | | Makes the code more general and not directly tied to specifically TCP sockets.
* Define cork() as pure virtual in Socket classPeter Åstrand (astrand)2017-11-083-3/+4
| | | | | | 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.
* Add missing virtual destructorsSteve Kondik2017-07-081-0/+1
| | | | | | | | | | | | | | 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
* Move getSockets() to SocketServer interfacePierre Ossman2016-10-051-0/+6
| | | | | Any caller using add or remove should also be able to list the sockets.
* Move socket write event handling in to the RFB corePierre Ossman2016-04-291-2/+7
| | | | | | 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.
* Fix race problem with detecting listening inetd socketsTristan Schmelcher2015-12-292-13/+8
| | | | | | 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.
* Init socket subsystem before parsing filtersPierre Ossman2015-12-071-0/+2
| | | | | | 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.
* Return TcpListener pointers rather than objectsPierre Ossman2015-09-292-82/+50
| | | | | | 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.
* Return correct error code from bind()Pierre Ossman2015-09-291-1/+2
| | | | | Closing the socket might overwrite errno so we need to save its value.
* Don't leak socket on setsockopt() errorsPierre Ossman2015-09-291-2/+5
|
* Log which addresses connection attempts are made againstPierre Ossman2015-07-301-0/+6
|
* Properly report connect error codesPierre Ossman2015-07-301-11/+13
| | | | | The logic was flawed and would treat all connect errors as if there were no addresses found.
* Clarify Windows SO_REUSEADDR exceptionPierre Ossman2015-04-231-1/+6
|
* Repair SO_REUSEADDRPierre Ossman2015-04-231-5/+5
| | | | | SO_REUSEADDR needs to be set before we call bind() for it to have any effect. It got shuffled around in e4d9726.
* Require getaddrinfo() on all systemsPierre Ossman2015-03-172-128/+1
| | | | | Every reasonably current system support getaddrinfo() so get rid of the legacy fallbacks.
* Do not look at errno for getaddrinfo() errorsPierre Ossman2015-03-171-2/+4
|
* Replacement for dup() on WindowsPierre Ossman2015-03-171-2/+19
| | | | It doesn't work on sockets, which require a bit more care.
* Fix proper socket headers for Win32Pierre Ossman2015-03-171-0/+6
|
* Resurrect TcpListener::getMyAddresses()Pierre Ossman2015-03-172-0/+59
| | | | | | | | | | | 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
* Make sure Win32 sockets are available in new listening APIPierre Ossman2015-03-171-0/+5
|
* AI_NUMERICSERV is not available on some systemsPierre Ossman2015-03-171-0/+5
|
* Make sure socket errno defines are available for Win32Pierre Ossman2015-03-171-0/+4
|
* family variable can be unset when matching any addressPierre Ossman2015-03-171-0/+2
|
* IPv6 support for TcpFilter.Tim Waugh2015-03-132-57/+201
|