diff options
| author | Jay Sorg <jay.sorg@gmail.com> | 2013-08-17 13:32:53 -0700 | 
|---|---|---|
| committer | Jay Sorg <jay.sorg@gmail.com> | 2013-08-17 13:32:53 -0700 | 
| commit | e602a28d5c7548ec0a6f5a7a3b217ecd43c29eac (patch) | |
| tree | be8220ba7c782bccf22755ecea38e2a2197edb9d /common/trans.c | |
| parent | ee98f1cdd4baf69f5c3620b1dfe1d59256ca443a (diff) | |
| download | xrdp-proprietary-e602a28d5c7548ec0a6f5a7a3b217ecd43c29eac.tar.gz xrdp-proprietary-e602a28d5c7548ec0a6f5a7a3b217ecd43c29eac.zip | |
common: transport aware when app is terminating
Diffstat (limited to 'common/trans.c')
| -rw-r--r-- | common/trans.c | 23 | 
1 files changed, 21 insertions, 2 deletions
| diff --git a/common/trans.c b/common/trans.c index e862249e..0b672168 100644 --- a/common/trans.c +++ b/common/trans.c @@ -142,6 +142,7 @@ trans_check_wait_objs(struct trans *self)                      in_trans->sck = in_sck;                      in_trans->type1 = TRANS_TYPE_SERVER;                      in_trans->status = TRANS_STATUS_UP; +                    in_trans->is_term = self->is_term;                      if (self->trans_conn_in(self, in_trans) != 0)                      { @@ -226,9 +227,18 @@ trans_force_read_s(struct trans *self, struct stream *in_s, int size)          {              if (g_tcp_last_error_would_block(self->sck))              { -                if (!g_tcp_can_recv(self->sck, 10)) +                if (!g_tcp_can_recv(self->sck, 100))                  {                      /* check for term here */ +                    if (self->is_term != 0) +                    { +                        if (self->is_term()) +                        { +                            /* term */ +                            self->status = TRANS_STATUS_DOWN; +                            return 1; +                        } +                    }                  }              }              else @@ -285,9 +295,18 @@ trans_force_write_s(struct trans *self, struct stream *out_s)          {              if (g_tcp_last_error_would_block(self->sck))              { -                if (!g_tcp_can_send(self->sck, 10)) +                if (!g_tcp_can_send(self->sck, 100))                  {                      /* check for term here */ +                    if (self->is_term != 0) +                    { +                        if (self->is_term()) +                        { +                            /* term */ +                            self->status = TRANS_STATUS_DOWN; +                            return 1; +                        } +                    }                  }              }              else | 
