diff options
| author | ArvidNorr <norrarvid@gmail.com> | 2013-01-16 01:28:35 -0800 | 
|---|---|---|
| committer | ArvidNorr <norrarvid@gmail.com> | 2013-01-16 01:28:35 -0800 | 
| commit | a2bbbd8cc336bedbda61a6af47d90bcccbe6aead (patch) | |
| tree | 9329f489b5dd4e245ee4c635d7dd18f553e260f3 /libxrdp/xrdp_mcs.c | |
| parent | b2c242f50eed96431e19c5905fc1c0269709da7c (diff) | |
| download | xrdp-proprietary-a2bbbd8cc336bedbda61a6af47d90bcccbe6aead.tar.gz xrdp-proprietary-a2bbbd8cc336bedbda61a6af47d90bcccbe6aead.zip  | |
Display PAM error in gateway setup, use domain name as IP/DNS, changed how the socket is closed
Diffstat (limited to 'libxrdp/xrdp_mcs.c')
| -rw-r--r-- | libxrdp/xrdp_mcs.c | 28 | 
1 files changed, 25 insertions, 3 deletions
diff --git a/libxrdp/xrdp_mcs.c b/libxrdp/xrdp_mcs.c index 77c0d10d..e5481c9c 100644 --- a/libxrdp/xrdp_mcs.c +++ b/libxrdp/xrdp_mcs.c @@ -819,6 +819,25 @@ xrdp_mcs_send(struct xrdp_mcs *self, struct stream *s, int chan)      return 0;  } +/** + * Internal help function to close the socket + * @param self + */ +void close_rdp_socket(struct xrdp_mcs *self) +{ +    if(self->iso_layer->tcp_layer) +    { +        if(self->iso_layer->tcp_layer->trans) +        {	     +            g_tcp_close(self->iso_layer->tcp_layer->trans->sck);	     +            self->iso_layer->tcp_layer->trans->sck = 0 ; +            g_writeln("xrdp_mcs_disconnect - socket closed"); +            return ; +        } +    } +    g_writeln("Failed to close socket"); +} +  /*****************************************************************************/  /* returns error */  int APP_CC @@ -833,7 +852,8 @@ xrdp_mcs_disconnect(struct xrdp_mcs *self)      if (xrdp_iso_init(self->iso_layer, s) != 0)      {          free_stream(s); -        DEBUG(("  out xrdp_mcs_disconnect error")); +        close_rdp_socket(self); +        DEBUG(("  out xrdp_mcs_disconnect error - 1"));          return 1;      } @@ -844,11 +864,13 @@ xrdp_mcs_disconnect(struct xrdp_mcs *self)      if (xrdp_iso_send(self->iso_layer, s) != 0)      {          free_stream(s); -        DEBUG(("  out xrdp_mcs_disconnect error")); +        close_rdp_socket(self); +        DEBUG(("  out xrdp_mcs_disconnect error - 2"));          return 1;      }      free_stream(s); -    DEBUG(("  out xrdp_mcs_disconnect")); +    close_rdp_socket(self); +    DEBUG(("xrdp_mcs_disconnect - close sent"));      return 0;  }  | 
