summaryrefslogtreecommitdiffstats
path: root/xrdp/xrdp_tcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'xrdp/xrdp_tcp.c')
-rw-r--r--xrdp/xrdp_tcp.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/xrdp/xrdp_tcp.c b/xrdp/xrdp_tcp.c
index ed08aef7..eed5278e 100644
--- a/xrdp/xrdp_tcp.c
+++ b/xrdp/xrdp_tcp.c
@@ -54,6 +54,11 @@ int xrdp_tcp_recv(struct xrdp_tcp* self, struct stream* s, int len)
{
int rcvd;
+ if (self->sck_closed)
+ {
+ DEBUG((" in xrdp_tcp_recv, sck closed\n\r"));
+ return 1;
+ }
DEBUG((" in xrdp_tcp_recv, gota get %d bytes\n\r", len));
init_stream(s, len);
while (len > 0)
@@ -78,6 +83,7 @@ int xrdp_tcp_recv(struct xrdp_tcp* self, struct stream* s, int len)
}
else if (rcvd == 0)
{
+ self->sck_closed = 1;
DEBUG((" error = 0 in xrdp_tcp_recv socket %d\n\r", self->sck));
return 1;
}
@@ -99,6 +105,11 @@ int xrdp_tcp_send(struct xrdp_tcp* self, struct stream* s)
int total;
int sent;
+ if (self->sck_closed)
+ {
+ DEBUG((" in xrdp_tcp_send, sck closed\n\r"));
+ return 1;
+ }
len = s->end - s->data;
DEBUG((" in xrdp_tcp_send, gota send %d bytes\n\r", len));
total = 0;
@@ -123,6 +134,7 @@ int xrdp_tcp_send(struct xrdp_tcp* self, struct stream* s)
}
else if (sent == 0)
{
+ self->sck_closed = 1;
DEBUG((" error = 0 in xrdp_tcp_send socket %d\n\r", self->sck));
return 1;
}