summaryrefslogtreecommitdiffstats
path: root/libxrdp/libxrdp.c
diff options
context:
space:
mode:
Diffstat (limited to 'libxrdp/libxrdp.c')
-rw-r--r--libxrdp/libxrdp.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/libxrdp/libxrdp.c b/libxrdp/libxrdp.c
index ea1e7f25..85d5312e 100644
--- a/libxrdp/libxrdp.c
+++ b/libxrdp/libxrdp.c
@@ -206,7 +206,17 @@ libxrdp_process_data(struct xrdp_session *session, struct stream *s)
if (do_read)
{
- s = libxrdp_force_read(session->trans);
+ if (s == 0)
+ {
+ s = libxrdp_force_read(session->trans);
+ }
+ else
+ {
+ if ((s->next_packet == 0) || (s->next_packet >= s->end))
+ {
+ s = libxrdp_force_read(session->trans);
+ }
+ }
if (s == 0)
{
g_writeln("libxrdp_process_data: libxrdp_force_read failed");
@@ -281,8 +291,7 @@ libxrdp_process_data(struct xrdp_session *session, struct stream *s)
if (cont)
{
- cont = (s->next_packet != 0) &&
- (s->next_packet < s->end);
+ cont = (s->next_packet != 0) && (s->next_packet < s->end);
}
}