diff options
Diffstat (limited to 'xrdp/xrdp_process.c')
| -rw-r--r-- | xrdp/xrdp_process.c | 11 |
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; |
