BOOL transport_disconnect(rdpTransport* transport) { BOOL status = TRUE; if (transport->layer == TRANSPORT_LAYER_TLS) status &= tls_disconnect(transport->TlsIn); if (transport->layer == TRANSPORT_LAYER_TSG || transport->layer == TRANSPORT_LAYER_TSG_TLS) { tsg_disconnect(transport->tsg); } else { status &= tcp_disconnect(transport->TcpIn); } if (transport->async) { if (transport->stopEvent) { SetEvent(transport->stopEvent); WaitForSingleObject(transport->thread, INFINITE); CloseHandle(transport->thread); CloseHandle(transport->stopEvent); transport->thread = NULL; transport->stopEvent = NULL; } } return status; }
BOOL transport_disconnect(rdpTransport* transport) { BOOL status = TRUE; if (transport->layer == TRANSPORT_LAYER_TLS) status &= tls_disconnect(transport->TlsIn); if (transport->layer == TRANSPORT_LAYER_TSG) { tsg_disconnect(transport->tsg); } else { status &= tcp_disconnect(transport->TcpIn); } return status; }