]> source.dussan.org Git - tigervnc.git/commitdiff
Added the ability to listen on both Unix socket and TCP port. 1191/head
authorJocelyn Le Sage <jocelyn@le-sage.com>
Sat, 23 Jan 2021 00:56:53 +0000 (19:56 -0500)
committerJocelyn Le Sage <jocelyn@le-sage.com>
Thu, 4 Feb 2021 13:13:48 +0000 (08:13 -0500)
Setting `rfbport` to `-1` disables TCP port listening.

unix/x0vncserver/x0vncserver.cxx
unix/x0vncserver/x0vncserver.man
unix/xserver/hw/vnc/Xvnc.man
unix/xserver/hw/vnc/vncExtInit.cc

index 1531de60b162a5abad84eb0d1d0ca6c74cc2cc8c..0aa2a92b1f9027da61b8e76f3a022ca027c62f89 100644 (file)
@@ -261,7 +261,9 @@ int main(int argc, char** argv)
     if (rfbunixpath.getValueStr()[0] != '\0') {
       listeners.push_back(new network::UnixListener(rfbunixpath, rfbunixmode));
       vlog.info("Listening on %s (mode %04o)", (const char*)rfbunixpath, (int)rfbunixmode);
-    } else {
+    }
+
+    if ((int)rfbport != -1) {
       if (localhostOnly)
         createLocalTcpListeners(&listeners, (int)rfbport);
       else
index 094abbe9bc62531a414b2d87fd7ddcc60c13ab71..e1a4646f4c9e3be9f4fb9264383703b86ecf7d13 100644 (file)
@@ -55,7 +55,8 @@ DISPLAY environment variable.
 .B \-rfbport \fIport\fP
 Specifies the TCP port on which x0vncserver listens for connections from
 viewers (the protocol used in VNC is called RFB - "remote framebuffer").
-The default port is 5900.
+The default port is 5900. Listening on TCP port can be disabled with
+-\frfbport\fP=-1.
 .
 .TP
 .B \-UseIPv4
@@ -68,7 +69,7 @@ Use IPv6 for incoming and outgoing connections. Default is on.
 .TP
 .B \-rfbunixpath \fIpath\fP
 Specifies the path of a Unix domain socket on which x0vncserver listens for
-connections from viewers, instead of listening on a TCP port.
+connections from viewers.
 .
 .TP
 .B \-rfbunixmode \fImode\fP
index 2d0089d7c1e6d485d75de8c1cec9f27b640f5821..c85c396f59218e618e8a68aae6b2e130b60b5b79 100644 (file)
@@ -78,7 +78,8 @@ Each desktop has a name which may be displayed by the viewer. It defaults to
 .B \-rfbport \fIport\fP
 Specifies the TCP port on which Xvnc listens for connections from viewers (the
 protocol used in VNC is called RFB - "remote framebuffer").  The default is
-5900 plus the display number.
+5900 plus the display number. Listening on TCP port can be disabled with
+-\frfbport\fP=-1.
 .
 .TP
 .B \-UseIPv4
@@ -91,7 +92,7 @@ Use IPv6 for incoming and outgoing connections. Default is on.
 .TP
 .B \-rfbunixpath \fIpath\fP
 Specifies the path of a Unix domain socket on which Xvnc listens for
-connections from viewers, instead of listening on a TCP port.
+connections from viewers.
 .
 .TP
 .B \-rfbunixmode \fImode\fP
index 1e7513a9009eb79fcb1f087ec715a04d9d30474e..a45c5bdef1ed0763393ed0fe78ed95c80e1a4711 100644 (file)
@@ -168,13 +168,17 @@ void vncExtensionInit(void)
 
       if (!desktop[scr]) {
         std::list<network::SocketListener*> listeners;
+        bool inetd = false;
         if (scr == 0 && vncInetdSock != -1) {
+          inetd = true;
           if (network::isSocketListening(vncInetdSock))
           {
             listeners.push_back(new network::TcpListener(vncInetdSock));
             vlog.info("inetd wait");
           }
-        } else if (((const char*)rfbunixpath)[0] != '\0') {
+        }
+
+        if (!inetd && ((const char*)rfbunixpath)[0] != '\0') {
           char path[PATH_MAX];
           int mode = (int)rfbunixmode;
 
@@ -189,7 +193,9 @@ void vncExtensionInit(void)
 
           vlog.info("Listening for VNC connections on %s (mode %04o)",
                     path, mode);
-        } else {
+        }
+
+        if (!inetd && rfbport != -1) {
           const char *addr = interface;
           int port = rfbport;
           if (port == 0) port = 5900 + atoi(vncGetDisplay());