diff options
| author | jsorg71 <jsorg71> | 2005-02-04 03:35:12 +0000 |
|---|---|---|
| committer | jsorg71 <jsorg71> | 2005-02-04 03:35:12 +0000 |
| commit | 63c49195a62cf40c0260cf04a63212a445fbfaca (patch) | |
| tree | 9c0554b071205f68e14d689b33fa8ae2d6475e1a /xrdp/xrdp_tcp.c | |
| parent | 0aff0efb522745ba9f9d64a505c22ef23a386cff (diff) | |
| download | xrdp-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.c | 12 |
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; } |
