Add server_chansrv_in_use() to module interface
This commit is contained in:
@@ -87,7 +87,8 @@ struct mod
|
|||||||
char *data, int data_len,
|
char *data, int data_len,
|
||||||
int total_data_len, int flags);
|
int total_data_len, int flags);
|
||||||
int (*server_bell_trigger)(struct mod *v);
|
int (*server_bell_trigger)(struct mod *v);
|
||||||
tintptr server_dumby[100 - 25]; /* align, 100 minus the number of server
|
int (*server_chansrv_in_use)(struct mod *v);
|
||||||
|
tintptr server_dumby[100 - 26]; /* align, 100 minus the number of server
|
||||||
functions above */
|
functions above */
|
||||||
/* common */
|
/* common */
|
||||||
tintptr handle; /* pointer to self as long */
|
tintptr handle; /* pointer to self as long */
|
||||||
|
|||||||
@@ -130,6 +130,7 @@ struct mod
|
|||||||
char *data, int data_len,
|
char *data, int data_len,
|
||||||
int total_data_len, int flags);
|
int total_data_len, int flags);
|
||||||
int (*server_bell_trigger)(struct mod *v);
|
int (*server_bell_trigger)(struct mod *v);
|
||||||
|
int (*server_chansrv_in_use)(struct mod *v);
|
||||||
/* off screen bitmaps */
|
/* off screen bitmaps */
|
||||||
int (*server_create_os_surface)(struct mod *v, int rdpindex,
|
int (*server_create_os_surface)(struct mod *v, int rdpindex,
|
||||||
int width, int height);
|
int width, int height);
|
||||||
@@ -184,7 +185,7 @@ struct mod
|
|||||||
int flags, int frame_id);
|
int flags, int frame_id);
|
||||||
int (*server_session_info)(struct mod *v, const char *data,
|
int (*server_session_info)(struct mod *v, const char *data,
|
||||||
int data_bytes);
|
int data_bytes);
|
||||||
tintptr server_dumby[100 - 44]; /* align, 100 minus the number of server
|
tintptr server_dumby[100 - 45]; /* align, 100 minus the number of server
|
||||||
functions above */
|
functions above */
|
||||||
/* common */
|
/* common */
|
||||||
tintptr handle; /* pointer to self as long */
|
tintptr handle; /* pointer to self as long */
|
||||||
|
|||||||
@@ -125,7 +125,8 @@ struct vnc
|
|||||||
char *data, int data_len,
|
char *data, int data_len,
|
||||||
int total_data_len, int flags);
|
int total_data_len, int flags);
|
||||||
int (*server_bell_trigger)(struct vnc *v);
|
int (*server_bell_trigger)(struct vnc *v);
|
||||||
tintptr server_dumby[100 - 25]; /* align, 100 minus the number of server
|
int (*server_chansrv_in_use)(struct vnc *v);
|
||||||
|
tintptr server_dumby[100 - 26]; /* align, 100 minus the number of server
|
||||||
functions above */
|
functions above */
|
||||||
/* common */
|
/* common */
|
||||||
tintptr handle; /* pointer to self as long */
|
tintptr handle; /* pointer to self as long */
|
||||||
|
|||||||
@@ -413,6 +413,8 @@ server_end_update(struct xrdp_mod *mod);
|
|||||||
int
|
int
|
||||||
server_bell_trigger(struct xrdp_mod *mod);
|
server_bell_trigger(struct xrdp_mod *mod);
|
||||||
int
|
int
|
||||||
|
server_chansrv_in_use(struct xrdp_mod *mod);
|
||||||
|
int
|
||||||
server_fill_rect(struct xrdp_mod *mod, int x, int y, int cx, int cy);
|
server_fill_rect(struct xrdp_mod *mod, int x, int y, int cx, int cy);
|
||||||
int
|
int
|
||||||
server_screen_blt(struct xrdp_mod *mod, int x, int y, int cx, int cy,
|
server_screen_blt(struct xrdp_mod *mod, int x, int y, int cx, int cy,
|
||||||
|
|||||||
+18
-8
@@ -427,6 +427,7 @@ xrdp_mm_setup_mod1(struct xrdp_mm *self)
|
|||||||
self->mod->server_begin_update = server_begin_update;
|
self->mod->server_begin_update = server_begin_update;
|
||||||
self->mod->server_end_update = server_end_update;
|
self->mod->server_end_update = server_end_update;
|
||||||
self->mod->server_bell_trigger = server_bell_trigger;
|
self->mod->server_bell_trigger = server_bell_trigger;
|
||||||
|
self->mod->server_chansrv_in_use = server_chansrv_in_use;
|
||||||
self->mod->server_fill_rect = server_fill_rect;
|
self->mod->server_fill_rect = server_fill_rect;
|
||||||
self->mod->server_screen_blt = server_screen_blt;
|
self->mod->server_screen_blt = server_screen_blt;
|
||||||
self->mod->server_paint_rect = server_paint_rect;
|
self->mod->server_paint_rect = server_paint_rect;
|
||||||
@@ -1628,8 +1629,6 @@ xrdp_mm_connect_chansrv(struct xrdp_mm *self, const char *ip, const char *port)
|
|||||||
{
|
{
|
||||||
int index;
|
int index;
|
||||||
|
|
||||||
self->usechansrv = 1;
|
|
||||||
|
|
||||||
if (self->wm->client_info->channels_allowed == 0)
|
if (self->wm->client_info->channels_allowed == 0)
|
||||||
{
|
{
|
||||||
LOG(LOG_LEVEL_DEBUG, "%s: "
|
LOG(LOG_LEVEL_DEBUG, "%s: "
|
||||||
@@ -2457,6 +2456,7 @@ xrdp_mm_connect(struct xrdp_mm *self)
|
|||||||
if (g_strcasecmp(value, "-1") == 0)
|
if (g_strcasecmp(value, "-1") == 0)
|
||||||
{
|
{
|
||||||
self->sesman_controlled = 1;
|
self->sesman_controlled = 1;
|
||||||
|
self->usechansrv = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3004,6 +3004,17 @@ server_bell_trigger(struct xrdp_mod *mod)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/* Chansrv in use on this configuration? */
|
||||||
|
int
|
||||||
|
server_chansrv_in_use(struct xrdp_mod *mod)
|
||||||
|
{
|
||||||
|
struct xrdp_wm *wm;
|
||||||
|
|
||||||
|
wm = (struct xrdp_wm *)(mod->wm);
|
||||||
|
return wm->mm->usechansrv;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
int
|
int
|
||||||
@@ -3610,14 +3621,13 @@ server_send_to_channel(struct xrdp_mod *mod, int channel_id,
|
|||||||
|
|
||||||
if (wm->mm->usechansrv)
|
if (wm->mm->usechansrv)
|
||||||
{
|
{
|
||||||
/*
|
/* Modules should not be calling this if chansrv is running -
|
||||||
* Xvnc backend reaches here
|
* they can use server_chansrv_in_use() to avoid doing this */
|
||||||
* should not return 1 as this case is not an error
|
LOG_DEVEL(LOG_LEVEL_ERROR,
|
||||||
*/
|
"Bad call of server_send_to_channel() detected");
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* vnc proxy mode reaches here */
|
|
||||||
return libxrdp_send_to_channel(wm->session, channel_id, data, data_len,
|
return libxrdp_send_to_channel(wm->session, channel_id, data, data_len,
|
||||||
total_data_len, flags);
|
total_data_len, flags);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -103,6 +103,7 @@ struct xrdp_mod
|
|||||||
char *data, int data_len,
|
char *data, int data_len,
|
||||||
int total_data_len, int flags);
|
int total_data_len, int flags);
|
||||||
int (*server_bell_trigger)(struct xrdp_mod *v);
|
int (*server_bell_trigger)(struct xrdp_mod *v);
|
||||||
|
int (*server_chansrv_in_use)(struct xrdp_mod *v);
|
||||||
/* off screen bitmaps */
|
/* off screen bitmaps */
|
||||||
int (*server_create_os_surface)(struct xrdp_mod *v, int rdpindex,
|
int (*server_create_os_surface)(struct xrdp_mod *v, int rdpindex,
|
||||||
int width, int height);
|
int width, int height);
|
||||||
@@ -158,7 +159,7 @@ struct xrdp_mod
|
|||||||
int flags, int frame_id);
|
int flags, int frame_id);
|
||||||
int (*server_session_info)(struct xrdp_mod *v, const char *data,
|
int (*server_session_info)(struct xrdp_mod *v, const char *data,
|
||||||
int data_bytes);
|
int data_bytes);
|
||||||
tintptr server_dumby[100 - 44]; /* align, 100 minus the number of server
|
tintptr server_dumby[100 - 45]; /* align, 100 minus the number of server
|
||||||
functions above */
|
functions above */
|
||||||
/* common */
|
/* common */
|
||||||
tintptr handle; /* pointer to self as int */
|
tintptr handle; /* pointer to self as int */
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ struct mod
|
|||||||
char *data, int data_len,
|
char *data, int data_len,
|
||||||
int total_data_len, int flags);
|
int total_data_len, int flags);
|
||||||
int (*server_bell_trigger)(struct mod *v);
|
int (*server_bell_trigger)(struct mod *v);
|
||||||
|
int (*server_chansrv_in_use)(struct mod *v);
|
||||||
/* off screen bitmaps */
|
/* off screen bitmaps */
|
||||||
int (*server_create_os_surface)(struct mod *v, int rdpindex,
|
int (*server_create_os_surface)(struct mod *v, int rdpindex,
|
||||||
int width, int height);
|
int width, int height);
|
||||||
@@ -151,7 +152,7 @@ struct mod
|
|||||||
char *data, int width, int height,
|
char *data, int width, int height,
|
||||||
int flags, int frame_id);
|
int flags, int frame_id);
|
||||||
|
|
||||||
tintptr server_dumby[100 - 43]; /* align, 100 minus the number of server
|
tintptr server_dumby[100 - 44]; /* align, 100 minus the number of server
|
||||||
functions above */
|
functions above */
|
||||||
/* common */
|
/* common */
|
||||||
tintptr handle; /* pointer to self as long */
|
tintptr handle; /* pointer to self as long */
|
||||||
|
|||||||
Reference in New Issue
Block a user