From f8859e31247e7a2ef712be820b279c600220deb0 Mon Sep 17 00:00:00 2001 From: Koichiro IWAO Date: Fri, 24 Aug 2018 15:39:31 +0900 Subject: [PATCH 1/6] remove xrdp dependency from travis build --- .travis.centos.sh | 2 +- .travis.ubuntu.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.centos.sh b/.travis.centos.sh index e87afeb..e0f0de5 100644 --- a/.travis.centos.sh +++ b/.travis.centos.sh @@ -4,7 +4,7 @@ SRC_DIR=${PWD} cd /tmp yum install -y epel-release -yum install -y xrdp xrdp-devel xrdp-selinux wget sudo +yum install -y wget sudo yum install -y pulseaudio pulseaudio-libs pulseaudio-libs-devel yum install -y rpmdevtools yum-utils yum-builddep -y pulseaudio diff --git a/.travis.ubuntu.sh b/.travis.ubuntu.sh index 2921f1e..53f267a 100644 --- a/.travis.ubuntu.sh +++ b/.travis.ubuntu.sh @@ -6,7 +6,7 @@ cd /tmp sed -i.bak -e 's|^# deb-src|deb-src|' /etc/apt/sources.list apt update -apt install -y build-essential dpkg-dev libpulse-dev pulseaudio pkg-config xrdp +apt install -y build-essential dpkg-dev libpulse-dev pulseaudio pkg-config apt install -y g++ clang apt install -y pulseaudio From b049cec8db8a8e8b65a28b331f49d57ba71b6141 Mon Sep 17 00:00:00 2001 From: Koichiro IWAO Date: Fri, 24 Aug 2018 15:49:23 +0900 Subject: [PATCH 2/6] configure: remove xrdp dependency --- configure.ac | 2 -- 1 file changed, 2 deletions(-) diff --git a/configure.ac b/configure.ac index 7506dfb..2e01eec 100644 --- a/configure.ac +++ b/configure.ac @@ -45,8 +45,6 @@ AC_PROG_LN_S AC_PROG_MAKE_SET # Checks for libraries. -PKG_CHECK_MODULES([XRDP], [xrdp >= 0.9.0]) -AC_SUBST(XRDP_CFLAGS) PKG_CHECK_MODULES([LIBPULSE], [libpulse]) m4_define([PULSE_MSG], [PULSE_DIR not specified. Follow the instructions in README.md.]) From 6509fea778f6f873e738129d0438773ea2826641 Mon Sep 17 00:00:00 2001 From: Koichiro IWAO Date: Fri, 24 Aug 2018 15:58:44 +0900 Subject: [PATCH 3/6] pass sockets names via environment variable now this module no longer depends on xrdp headers. --- src/module-xrdp-sink.c | 15 ++++++++++----- src/module-xrdp-source.c | 15 ++++++++++----- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/module-xrdp-sink.c b/src/module-xrdp-sink.c index 5daaf85..1dd11b9 100644 --- a/src/module-xrdp-sink.c +++ b/src/module-xrdp-sink.c @@ -59,9 +59,6 @@ #include #include -#include - - /* defined in pulse/version.h */ #if PA_PROTOCOL_VERSION > 28 /* these used to be defined in pulsecore/macro.h */ @@ -297,6 +294,7 @@ static int lsend(int fd, char *data, int bytes) { static int data_send(struct userdata *u, pa_memchunk *chunk) { char *data; char *socket_dir; + char *sink_socket; int bytes; int sent; int fd; @@ -318,9 +316,16 @@ static int data_send(struct userdata *u, pa_memchunk *chunk) { { socket_dir = "/tmp/.xrdp"; } - snprintf(s.sun_path, bytes, "%s/" CHANSRV_PORT_OUT_BASE_STR, - socket_dir, u->display_num); + sink_socket = getenv("CHANSRV_PULSE_SINK_SOCKET"); + if (sink_socket == NULL || sink_socket[0] == '\0') + { + /* usually it doesn't reach here. if the socket name is not given + via environment variable, use hardcoded name as fallback */ + snprintf(sink_socket, bytes, "xrdp_chansrv_audio_out_socket_%d", u->display_num); + } + snprintf(s.sun_path, bytes, "%s/%s", socket_dir, sink_socket); pa_log_debug("trying to connect to %s", s.sun_path); + if (connect(fd, (struct sockaddr *)&s, sizeof(struct sockaddr_un)) != 0) { u->failed_connect_time = pa_rtclock_now(); diff --git a/src/module-xrdp-source.c b/src/module-xrdp-source.c index a8ec94b..652a07b 100644 --- a/src/module-xrdp-source.c +++ b/src/module-xrdp-source.c @@ -46,9 +46,6 @@ #include #include -#include - - /* defined in pulse/version.h */ #if PA_PROTOCOL_VERSION > 28 /* these used to be defined in pulsecore/macro.h */ @@ -181,6 +178,7 @@ static int data_get(struct userdata *u, pa_memchunk *chunk) { struct sockaddr_un s; char *data; char *socket_dir; + char *source_socket; char buf[11]; unsigned char ubuf[10]; @@ -195,8 +193,15 @@ static int data_get(struct userdata *u, pa_memchunk *chunk) { { socket_dir = "/tmp/.xrdp"; } - snprintf(s.sun_path, bytes, "%s/" CHANSRV_PORT_IN_BASE_STR, - socket_dir, u->display_num); + source_socket = getenv("CHANSRV_PULSE_SINK_SOCKET"); + if (source_socket == NULL || source_socket[0] == '\0') + { + + /* usually it doesn't reach here. if the socket name is not given + via environment variable, use hardcoded name as fallback */ + snprintf(source_socket, bytes, "xrdp_chansrv_audio_in_socket_%d", u->display_num); + } + snprintf(s.sun_path, bytes, "%s/%s", socket_dir, source_socket); pa_log_debug("Trying to connect to %s", s.sun_path); if (connect(fd, (struct sockaddr *) &s, sizeof(struct sockaddr_un)) != 0) { From 80ee64dbc9857158294f69c3ab17f00d2b7343e0 Mon Sep 17 00:00:00 2001 From: Koichiro IWAO Date: Mon, 27 Aug 2018 15:09:27 +0900 Subject: [PATCH 4/6] add some log, fix indent --- src/module-xrdp-sink.c | 11 ++++++++--- src/module-xrdp-source.c | 11 ++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/module-xrdp-sink.c b/src/module-xrdp-sink.c index 1dd11b9..ed78c38 100644 --- a/src/module-xrdp-sink.c +++ b/src/module-xrdp-sink.c @@ -319,9 +319,14 @@ static int data_send(struct userdata *u, pa_memchunk *chunk) { sink_socket = getenv("CHANSRV_PULSE_SINK_SOCKET"); if (sink_socket == NULL || sink_socket[0] == '\0') { - /* usually it doesn't reach here. if the socket name is not given - via environment variable, use hardcoded name as fallback */ - snprintf(sink_socket, bytes, "xrdp_chansrv_audio_out_socket_%d", u->display_num); + pa_log("Could not obtain sink_socket from environment."); + /* usually it doesn't reach here. if the socket name is not given + via environment variable, use hardcoded name as fallback */ + snprintf(sink_socket, bytes, "xrdp_chansrv_audio_out_socket_%d", u->display_num); + } + else + { + pa_log("Obtained sink_socket from environment."); } snprintf(s.sun_path, bytes, "%s/%s", socket_dir, sink_socket); pa_log_debug("trying to connect to %s", s.sun_path); diff --git a/src/module-xrdp-source.c b/src/module-xrdp-source.c index 652a07b..d2a598c 100644 --- a/src/module-xrdp-source.c +++ b/src/module-xrdp-source.c @@ -197,9 +197,14 @@ static int data_get(struct userdata *u, pa_memchunk *chunk) { if (source_socket == NULL || source_socket[0] == '\0') { - /* usually it doesn't reach here. if the socket name is not given - via environment variable, use hardcoded name as fallback */ - snprintf(source_socket, bytes, "xrdp_chansrv_audio_in_socket_%d", u->display_num); + pa_log("Could not obtain source_socket from environment."); + /* usually it doesn't reach here. if the socket name is not given + via environment variable, use hardcoded name as fallback */ + snprintf(source_socket, bytes, "xrdp_chansrv_audio_in_socket_%d", u->display_num); + } + else + { + pa_log("Obtained sink_socket from environment."); } snprintf(s.sun_path, bytes, "%s/%s", socket_dir, source_socket); pa_log_debug("Trying to connect to %s", s.sun_path); From 0bc8be72439e5586ee8e6dd115e7ecd2a028b995 Mon Sep 17 00:00:00 2001 From: Koichiro IWAO Date: Mon, 27 Aug 2018 15:20:13 +0900 Subject: [PATCH 5/6] add XRDP_ prefix to xrdp related environment variables and remove CHANSRV, use the shorter name --- src/module-xrdp-sink.c | 2 +- src/module-xrdp-source.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/module-xrdp-sink.c b/src/module-xrdp-sink.c index ed78c38..8fac606 100644 --- a/src/module-xrdp-sink.c +++ b/src/module-xrdp-sink.c @@ -316,7 +316,7 @@ static int data_send(struct userdata *u, pa_memchunk *chunk) { { socket_dir = "/tmp/.xrdp"; } - sink_socket = getenv("CHANSRV_PULSE_SINK_SOCKET"); + sink_socket = getenv("XRDP_PULSE_SINK_SOCKET"); if (sink_socket == NULL || sink_socket[0] == '\0') { pa_log("Could not obtain sink_socket from environment."); diff --git a/src/module-xrdp-source.c b/src/module-xrdp-source.c index d2a598c..764e96a 100644 --- a/src/module-xrdp-source.c +++ b/src/module-xrdp-source.c @@ -193,7 +193,7 @@ static int data_get(struct userdata *u, pa_memchunk *chunk) { { socket_dir = "/tmp/.xrdp"; } - source_socket = getenv("CHANSRV_PULSE_SINK_SOCKET"); + source_socket = getenv("XRDP_PULSE_SINK_SOCKET"); if (source_socket == NULL || source_socket[0] == '\0') { From 389667c3e39c0d0b1881c600bb837b5c921f0ed2 Mon Sep 17 00:00:00 2001 From: Koichiro IWAO Date: Mon, 27 Aug 2018 15:35:58 +0900 Subject: [PATCH 6/6] use pa_log_debug instead of pa_log, a little bit too noisy --- src/module-xrdp-sink.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/module-xrdp-sink.c b/src/module-xrdp-sink.c index 8fac606..1b95d1d 100644 --- a/src/module-xrdp-sink.c +++ b/src/module-xrdp-sink.c @@ -319,14 +319,14 @@ static int data_send(struct userdata *u, pa_memchunk *chunk) { sink_socket = getenv("XRDP_PULSE_SINK_SOCKET"); if (sink_socket == NULL || sink_socket[0] == '\0') { - pa_log("Could not obtain sink_socket from environment."); + pa_log_debug("Could not obtain sink_socket from environment."); /* usually it doesn't reach here. if the socket name is not given via environment variable, use hardcoded name as fallback */ snprintf(sink_socket, bytes, "xrdp_chansrv_audio_out_socket_%d", u->display_num); } else { - pa_log("Obtained sink_socket from environment."); + pa_log_debug("Obtained sink_socket from environment."); } snprintf(s.sun_path, bytes, "%s/%s", socket_dir, sink_socket); pa_log_debug("trying to connect to %s", s.sun_path);