diff --git a/common/file_loc.h b/common/file_loc.h index db312fb4..c8b3a76f 100644 --- a/common/file_loc.h +++ b/common/file_loc.h @@ -37,4 +37,8 @@ #define XRDP_SHARE_PATH "/usr/local/share/xrdp" #endif +#if !defined(XRDP_LIB_PATH) +#define XRDP_LIB_PATH "/usr/local/lib/xrdp" +#endif + #endif diff --git a/xrdp/Makefile.am b/xrdp/Makefile.am index 3fe0138a..ac3b7fe0 100644 --- a/xrdp/Makefile.am +++ b/xrdp/Makefile.am @@ -11,6 +11,7 @@ AM_CFLAGS = \ -DXRDP_SBIN_PATH=\"${sbindir}\" \ -DXRDP_SHARE_PATH=\"${datadir}/xrdp\" \ -DXRDP_PID_PATH=\"${localstatedir}/run\" \ + -DXRDP_LIB_PATH=\"${libdir}\" \ $(EXTRA_DEFINES) INCLUDES = \ diff --git a/xrdp/xrdp.ini b/xrdp/xrdp.ini index f4c44666..7b2e33a8 100644 --- a/xrdp/xrdp.ini +++ b/xrdp/xrdp.ini @@ -63,6 +63,7 @@ password=ask ip=127.0.0.1 port=-1 xserverbpp=24 +code=10 [xrdp2] name=sesman-Xvnc diff --git a/xrdp/xrdp_mm.c b/xrdp/xrdp_mm.c index cd4006f4..0a79810b 100644 --- a/xrdp/xrdp_mm.c +++ b/xrdp/xrdp_mm.c @@ -17,6 +17,7 @@ * * module manager */ + #include #define ACCESS #include "xrdp.h" @@ -148,13 +149,10 @@ xrdp_mm_send_login(struct xrdp_mm *self) { password = value; } - else if (g_strcasecmp(name, "lib") == 0) + else if (g_strcasecmp(name, "code") == 0) { - if ((g_strcasecmp(value, "libxup.so") == 0) || - (g_strcasecmp(value, "xup.dll") == 0)) - { - self->code = 10; - } + /* this code is either 0 for Xvnc or 10 for X11rdp */ + self->code = g_atoi(value); } else if (g_strcasecmp(name, "xserverbpp") == 0) { @@ -311,8 +309,9 @@ xrdp_mm_setup_mod1(struct xrdp_mm *self) if (self->mod_handle == 0) { + g_snprintf(text, 255, "%s/%s", XRDP_LIB_PATH, lib); /* Let the main thread load the lib,*/ - self->mod_handle = g_xrdp_sync(xrdp_mm_sync_load, (long)lib, 0); + self->mod_handle = g_xrdp_sync(xrdp_mm_sync_load, (tintptr)text, 0); if (self->mod_handle != 0) {