summaryrefslogtreecommitdiffstats
path: root/xrdp/xrdp_process.c
diff options
context:
space:
mode:
Diffstat (limited to 'xrdp/xrdp_process.c')
-rw-r--r--xrdp/xrdp_process.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/xrdp/xrdp_process.c b/xrdp/xrdp_process.c
index 0f8323da..21512800 100644
--- a/xrdp/xrdp_process.c
+++ b/xrdp/xrdp_process.c
@@ -66,7 +66,7 @@ int xrdp_process_main_loop(struct xrdp_process* self)
{
init_stream(s, 8192);
cont = 1;
- while (cont)
+ while (cont && !self->term)
{
if (xrdp_rdp_recv(self->rdp_layer, s, &code) != 0)
{
@@ -123,7 +123,7 @@ int xrdp_process_main_loop(struct xrdp_process* self)
{
break;
}
- if (self->wm->mod->mod_signal((int)self->wm->mod) != 0)
+ if (self->wm->mod->mod_signal(self->wm->mod) != 0)
{
break;
}
@@ -138,6 +138,13 @@ int xrdp_process_main_loop(struct xrdp_process* self)
}
}
}
+ if (self->wm->mod != 0)
+ {
+ if (self->wm->mod->mod_end != 0)
+ {
+ self->wm->mod->mod_end(self->wm->mod);
+ }
+ }
xrdp_rdp_disconnect(self->rdp_layer);
xrdp_rdp_delete(self->rdp_layer);
self->rdp_layer = 0;