Hello community, here is the log from the commit of package xorgxrdp for openSUSE:Factory checked in at 2017-10-03 23:17:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xorgxrdp (Old) and /work/SRC/openSUSE:Factory/.xorgxrdp.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xorgxrdp" Tue Oct 3 23:17:44 2017 rev:3 rq:530424 version:0.2.4 Changes: -------- --- /work/SRC/openSUSE:Factory/xorgxrdp/xorgxrdp.changes 2017-09-05 15:16:31.514230635 +0200 +++ /work/SRC/openSUSE:Factory/.xorgxrdp.new/xorgxrdp.changes 2017-10-03 23:17:46.062342787 +0200 @@ -1,0 +2,6 @@ +Thu Sep 28 04:23:42 UTC 2017 - fezh...@suse.com + +- update to 0.2.4 + + Implement disconnection by xrdp-dis command #51 + +------------------------------------------------------------------- Old: ---- xorgxrdp-0.2.3.tar.gz xorgxrdp-0.2.3.tar.gz.asc New: ---- xorgxrdp-0.2.4.tar.gz xorgxrdp-0.2.4.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xorgxrdp.spec ++++++ --- /var/tmp/diff_new_pack.3IksZm/_old 2017-10-03 23:17:46.690254419 +0200 +++ /var/tmp/diff_new_pack.3IksZm/_new 2017-10-03 23:17:46.694253856 +0200 @@ -17,7 +17,7 @@ Name: xorgxrdp -Version: 0.2.3 +Version: 0.2.4 Release: 0 Summary: Xorg drivers for xrdp License: X11 ++++++ xorgxrdp-0.2.3.tar.gz -> xorgxrdp-0.2.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorgxrdp-0.2.3/README.md new/xorgxrdp-0.2.4/README.md --- old/xorgxrdp-0.2.3/README.md 2017-07-13 08:45:00.000000000 +0200 +++ new/xorgxrdp-0.2.4/README.md 2017-09-14 09:28:53.000000000 +0200 @@ -1,6 +1,6 @@ [![Build Status](https://travis-ci.org/neutrinolabs/xorgxrdp.svg?branch=devel)](https://travis-ci.org/neutrinolabs/xorgxrdp) -*Current Version:* 0.2.3 +*Current Version:* 0.2.4 # xorgxrdp @@ -14,6 +14,8 @@ xorgxrdp is to be used together with [xrdp](https://github.com/neutrinolabs/xrdp) and X.Org Server. It is pretty useless using xorgxrdp alone. +![xorgxrdp overview](https://github.com/neutrinolabs/xorgxrdp/raw/gh-pages/docs/xorgxrdp_overview.png) + ## Features xorgxrdp supports screen resizing. When an RDP client connects, the screen is diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorgxrdp-0.2.3/configure new/xorgxrdp-0.2.4/configure --- old/xorgxrdp-0.2.3/configure 2017-07-13 08:48:27.000000000 +0200 +++ new/xorgxrdp-0.2.4/configure 2017-09-19 09:55:06.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for xorgxrdp 0.2.3. +# Generated by GNU Autoconf 2.69 for xorgxrdp 0.2.4. # # Report bugs to <xrdp-de...@googlegroups.com>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='xorgxrdp' PACKAGE_TARNAME='xorgxrdp' -PACKAGE_VERSION='0.2.3' -PACKAGE_STRING='xorgxrdp 0.2.3' +PACKAGE_VERSION='0.2.4' +PACKAGE_STRING='xorgxrdp 0.2.4' PACKAGE_BUGREPORT='xrdp-de...@googlegroups.com' PACKAGE_URL='' @@ -1335,7 +1335,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures xorgxrdp 0.2.3 to adapt to many kinds of systems. +\`configure' configures xorgxrdp 0.2.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1405,7 +1405,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xorgxrdp 0.2.3:";; + short | recursive ) echo "Configuration of xorgxrdp 0.2.4:";; esac cat <<\_ACEOF @@ -1529,7 +1529,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -xorgxrdp configure 0.2.3 +xorgxrdp configure 0.2.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1807,7 +1807,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by xorgxrdp $as_me 0.2.3, which was +It was created by xorgxrdp $as_me 0.2.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2672,7 +2672,7 @@ # Define the identity of the package. PACKAGE='xorgxrdp' - VERSION='0.2.3' + VERSION='0.2.4' cat >>confdefs.h <<_ACEOF @@ -13521,7 +13521,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by xorgxrdp $as_me 0.2.3, which was +This file was extended by xorgxrdp $as_me 0.2.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13587,7 +13587,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -xorgxrdp config.status 0.2.3 +xorgxrdp config.status 0.2.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorgxrdp-0.2.3/configure.ac new/xorgxrdp-0.2.4/configure.ac --- old/xorgxrdp-0.2.3/configure.ac 2017-07-13 08:45:00.000000000 +0200 +++ new/xorgxrdp-0.2.4/configure.ac 2017-09-14 09:28:53.000000000 +0200 @@ -1,7 +1,7 @@ # Process this file with autoconf to produce a configure script AC_PREREQ(2.65) -AC_INIT([xorgxrdp], [0.2.3], [xrdp-de...@googlegroups.com]) +AC_INIT([xorgxrdp], [0.2.4], [xrdp-de...@googlegroups.com]) AC_CONFIG_HEADERS(config_ac.h:config_ac-h.in) AM_INIT_AUTOMAKE([1.11 foreign parallel-tests]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorgxrdp-0.2.3/module/rdp.h new/xorgxrdp-0.2.4/module/rdp.h --- old/xorgxrdp-0.2.3/module/rdp.h 2017-06-14 02:29:25.000000000 +0200 +++ new/xorgxrdp-0.2.4/module/rdp.h 2017-09-07 06:29:48.000000000 +0200 @@ -270,6 +270,8 @@ int listen_sck; char uds_data[256]; + int disconnect_sck; + char disconnect_uds[256]; rdpClientCon *clientConHead; rdpClientCon *clientConTail; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorgxrdp-0.2.3/module/rdpClientCon.c new/xorgxrdp-0.2.4/module/rdpClientCon.c --- old/xorgxrdp-0.2.3/module/rdpClientCon.c 2017-06-14 02:29:25.000000000 +0200 +++ new/xorgxrdp-0.2.4/module/rdpClientCon.c 2017-09-07 06:29:48.000000000 +0200 @@ -1066,6 +1066,7 @@ int max; int sel; int count; + char buf[8]; LLOGLN(10, ("rdpClientConCheck:")); dev = rdpGetDevFromScreen(pScreen); @@ -1074,6 +1075,14 @@ FD_ZERO(&rfds); count = 0; max = 0; + + if (dev->disconnect_sck > 0) + { + count++; + FD_SET(LTOUI32(dev->disconnect_sck), &rfds); + max = RDPMAX(dev->disconnect_sck, max); + } + if (dev->listen_sck > 0) { count++; @@ -1116,6 +1125,7 @@ LLOGLN(10, ("rdpClientConCheck: no select")); return 0; } + if (dev->listen_sck > 0) { if (FD_ISSET(LTOUI32(dev->listen_sck), &rfds)) @@ -1123,6 +1133,27 @@ rdpClientConGotConnection(pScreen, dev); } } + + if (dev->disconnect_sck > 0) + { + if (FD_ISSET(LTOUI32(dev->disconnect_sck), &rfds)) + { + + if (g_sck_recv(dev->disconnect_sck, buf, sizeof(buf), 0)) + { + LLOGLN(0, ("rdpClientConCheck: got disconnection request")); + + /* disconnect all clients */ + clientCon = dev->clientConHead; + while (clientCon != NULL) + { + rdpClientConDisconnect(dev, clientCon); + clientCon = clientCon->next; + } + } + } + } + clientCon = dev->clientConHead; while (clientCon != NULL) { @@ -1182,7 +1213,7 @@ { if (!g_directory_exist(socket_dir)) { - LLOGLN(0, ("rdpup_init: g_create_dir(%s) failed", socket_dir)); + LLOGLN(0, ("rdpClientConInit: g_create_dir(%s) failed", socket_dir)); return 0; } } @@ -1194,6 +1225,8 @@ LLOGLN(0, ("rdpClientConInit: can not run at display < 1")); return 0; } + + /* TODO: don't hardcode socket name */ g_sprintf(dev->uds_data, "%s/xrdp_display_%s", socket_dir, display); if (dev->listen_sck == 0) { @@ -1208,6 +1241,21 @@ rdpClientConAddEnabledDevice(dev->pScreen, dev->listen_sck); } + /* disconnect socket */ /* TODO: don't hardcode socket name */ + g_sprintf(dev->disconnect_uds, "%s/xrdp_disconnect_display_%s", socket_dir, display); + if (dev->disconnect_sck == 0) + { + unlink(dev->disconnect_uds); + dev->disconnect_sck = g_sck_local_socket_dgram(); + if (g_sck_local_bind(dev->disconnect_sck, dev->disconnect_uds) != 0) + { + LLOGLN(0, ("rdpClientConInit: g_tcp_local_bind failed at %s:%d", __FILE__, __LINE__)); + return 1; + } + g_sck_listen(dev->disconnect_sck); + rdpClientConAddEnabledDevice(dev->pScreen, dev->disconnect_sck); + } + ptext = getenv("XRDP_SESMAN_MAX_DISC_TIME"); if (ptext != 0) { @@ -1261,6 +1309,15 @@ LLOGLN(0, ("rdpClientConDeinit: deleting file %s", dev->uds_data)); unlink(dev->uds_data); } + + if (dev->disconnect_sck != 0) + { + rdpClientConRemoveEnabledDevice(dev->disconnect_sck); + g_sck_close(dev->disconnect_sck); + LLOGLN(0, ("rdpClientConDeinit: deleting file %s", dev->disconnect_uds)); + unlink(dev->disconnect_uds); + } + return 0; }