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.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/xrdp/xrdp_process.c b/xrdp/xrdp_process.c
index 91531688..72c39ff5 100644
--- a/xrdp/xrdp_process.c
+++ b/xrdp/xrdp_process.c
@@ -105,7 +105,7 @@ int xrdp_process_loop(struct xrdp_process* self, struct stream* s)
int xrdp_process_main_loop(struct xrdp_process* self)
{
#ifndef XRDP_LIB
- int i;
+ int sel_r;
struct stream* s;
make_stream(s);
@@ -117,8 +117,16 @@ int xrdp_process_main_loop(struct xrdp_process* self)
{
while (!g_is_term() && !self->term)
{
- i = g_tcp_select(self->sck, self->app_sck);
- if (i & 1)
+ sel_r = g_tcp_select(self->sck, self->app_sck);
+ if (sel_r == 0) /* no data on any stream */
+ {
+ g_sleep(10);
+ }
+ else if (sel_r < 0)
+ {
+ break;
+ }
+ if (sel_r & 1)
{
init_stream(s, 8192);
if (xrdp_process_loop(self, s) != 0)
@@ -126,7 +134,7 @@ int xrdp_process_main_loop(struct xrdp_process* self)
break;
}
}
- if (i & 2) /* mod socket fired */
+ if (sel_r & 2) /* mod socket fired */
{
if (self->wm->mod == 0)
{
@@ -141,14 +149,6 @@ int xrdp_process_main_loop(struct xrdp_process* self)
break;
}
}
- if (i == 0) /* no data on any stream */
- {
- g_sleep(10);
- }
- else if (i < 0)
- {
- break;
- }
}
}
if (self->wm->mod != 0)