Hi, On 09/15/2014 05:42 PM, Keith Packard wrote: > This disables the tcp listen socket by default. Then, it > uses a new xtrans interface, TRANS(Listen), to provide a command line > option to re-enable those if desired. > > v2: Leave unix socket enabled by default. Add configure options. > > Signed-off-by: Keith Packard <[email protected]>
Looks good: Reviewed-by: Hans de Goede <[email protected]> Regards, Hans > --- > configure.ac | 20 ++++++++++++++++++++ > include/dix-config.h.in | 9 +++++++++ > man/Xserver.man | 7 +++++++ > os/utils.c | 29 +++++++++++++++++++++++++++++ > 4 files changed, 65 insertions(+) > > diff --git a/configure.ac b/configure.ac > index cba7d24..a7bd8bd 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -484,6 +484,16 @@ AC_ARG_WITH(os-vendor, > AS_HELP_STRING([--with-os-vendor=OSVENDOR], [Name o > AC_ARG_WITH(builderstring, > AS_HELP_STRING([--with-builderstring=BUILDERSTRING], [Additional builder > string]), > [ BUILDERSTRING="$withval" ] > [ ]) > +AC_ARG_ENABLE(listen-tcp, AS_HELP_STRING([--enable-listen-tcp], > + [Listen on TCP by default > (default:disabled)]), > + [LISTEN_TCP=$enableval], [LISTEN_TCP=no]) > +AC_ARG_ENABLE(listen-unix, AS_HELP_STRING([--disable-listen-unix], > + [Listen on Unix by default > (default:enabled)]), > + [LISTEN_UNIX=$enableval], [LISTEN_UNIX=yes]) > + > +AC_ARG_ENABLE(listen-local, AS_HELP_STRING([--disable-listen-local], > + [Listen on local by default > (default:enabled)]), > + [LISTEN_LOCAL=$enableval], > [LISTEN_LOCAL=yes]) > > dnl Determine font path > XORG_FONTROOTDIR > @@ -1081,6 +1091,16 @@ if test "x$RES" = xyes; then > SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $RESOURCEPROTO" > fi > > +if test "x$LISTEN_TCP" = xyes; then > + AC_DEFINE(LISTEN_TCP, 1, [Listen on TCP socket]) > +fi > +if test "x$LISTEN_UNIX" = xyes; then > + AC_DEFINE(LISTEN_UNIX, 1, [Listen on Unix socket]) > +fi > +if test "x$LISTEN_LOCAL" = xyes; then > + AC_DEFINE(LISTEN_LOCAL, 1, [Listen on local socket]) > +fi > + > # The XRes extension may support client ID tracking only if it has > # been specifically enabled. Client ID tracking is implicitly not > # supported if XRes extension is disabled. > diff --git a/include/dix-config.h.in b/include/dix-config.h.in > index 2203f82..41b6a22 100644 > --- a/include/dix-config.h.in > +++ b/include/dix-config.h.in > @@ -496,4 +496,13 @@ > /* byte order */ > #undef X_BYTE_ORDER > > +/* Listen on TCP socket */ > +#undef LISTEN_TCP > + > +/* Listen on Unix socket */ > +#undef LISTEN_UNIX > + > +/* Listen on local socket */ > +#undef LISTEN_LOCAL > + > #endif /* _DIX_CONFIG_H_ */ > diff --git a/man/Xserver.man b/man/Xserver.man > index 7a74e85..c03830c 100644 > --- a/man/Xserver.man > +++ b/man/Xserver.man > @@ -196,6 +196,13 @@ with > This option may be issued multiple times to disable listening to different > transport types. > .TP 8 > +.B \-listen \fItrans-type\fP > +enables a transport type. For example, TCP/IP connections can be enabled > +with > +.BR "\-listen tcp" . > +This option may be issued multiple times to enable listening to different > +transport types. > +.TP 8 > .B \-noreset > prevents a server reset when the last client connection is closed. This > overrides a previous > diff --git a/os/utils.c b/os/utils.c > index c83f77d..82fc621 100644 > --- a/os/utils.c > +++ b/os/utils.c > @@ -557,6 +557,7 @@ UseMsg(void) > ErrorF("-nolock disable the locking mechanism\n"); > #endif > ErrorF("-nolisten string don't listen on protocol\n"); > + ErrorF("-listen string listen on protocol\n"); > ErrorF("-noreset don't reset after last client exists\n"); > ErrorF("-background [none] create root window with no background\n"); > ErrorF("-reset reset after last client exists\n"); > @@ -646,6 +647,19 @@ VerifyDisplayName(const char *d) > return 1; > } > > +static const char *defaultNoListenList[] = { > +#ifndef LISTEN_TCP > + "tcp", > +#endif > +#ifndef LISTEN_UNIX > + "unix", > +#endif > +#ifndef LISTEN_LOCAL > + "local", > +#endif > + NULL > +}; > + > /* > * This function parses the command line. Handles device-independent fields > * and allows ddx to handle additional fields. It is not allowed to modify > @@ -664,6 +678,12 @@ ProcessCommandLine(int argc, char *argv[]) > PartialNetwork = TRUE; > #endif > > + for (i = 0; defaultNoListenList[i] != NULL; i++) { > + if (_XSERVTransNoListen(defaultNoListenList[i])) > + ErrorF("Failed to disable listen for %s transport", > + defaultNoListenList[i]); > + } > + > for (i = 1; i < argc; i++) { > /* call ddx first, so it can peek/override if it wants */ > if ((skip = ddxProcessArgument(argc, argv, i))) { > @@ -849,6 +869,15 @@ ProcessCommandLine(int argc, char *argv[]) > else > UseMsg(); > } > + else if (strcmp(argv[i], "-listen") == 0) { > + if (++i < argc) { > + if (_XSERVTransListen(argv[i])) > + ErrorF("Failed to enable listen for %s transport", > + argv[i]); > + } > + else > + UseMsg(); > + } > else if (strcmp(argv[i], "-noreset") == 0) { > dispatchExceptionAtReset = 0; > } > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
