summaryrefslogtreecommitdiffstats
path: root/xrdp/xrdp_tcp.c
diff options
context:
space:
mode:
authorjsorg71 <jsorg71>2005-02-04 03:35:12 +0000
committerjsorg71 <jsorg71>2005-02-04 03:35:12 +0000
commit63c49195a62cf40c0260cf04a63212a445fbfaca (patch)
tree9c0554b071205f68e14d689b33fa8ae2d6475e1a /xrdp/xrdp_tcp.c
parent0aff0efb522745ba9f9d64a505c22ef23a386cff (diff)
downloadxrdp-proprietary-63c49195a62cf40c0260cf04a63212a445fbfaca.tar.gz
xrdp-proprietary-63c49195a62cf40c0260cf04a63212a445fbfaca.zip
if sck is closed, don't write or read it again, other small fixes
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;
}