From ca52da15cdbc899417f4c157bedeb01b7744aec7 Mon Sep 17 00:00:00 2001 From: Vic Lee Date: Tue, 23 Aug 2011 16:14:32 +0800 Subject: [PATCH] server: handle disconnection. --- libfreerdp-core/peer.c | 3 +++ libfreerdp-core/transport.c | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/libfreerdp-core/peer.c b/libfreerdp-core/peer.c index b6048c8ab..2e122732d 100644 --- a/libfreerdp-core/peer.c +++ b/libfreerdp-core/peer.c @@ -216,6 +216,9 @@ static int peer_recv_callback(rdpTransport* transport, STREAM* s, void* extra) static void freerdp_peer_disconnect(freerdp_peer* client) { + rdpPeer* peer = (rdpPeer*)client->peer; + + transport_disconnect(peer->rdp->transport); } freerdp_peer* freerdp_peer_new(int sockfd) diff --git a/libfreerdp-core/transport.c b/libfreerdp-core/transport.c index 79df17f37..2730ac802 100644 --- a/libfreerdp-core/transport.c +++ b/libfreerdp-core/transport.c @@ -70,6 +70,8 @@ void transport_attach(rdpTransport* transport, int sockfd) boolean transport_disconnect(rdpTransport* transport) { + if (transport->tls) + IFCALL(transport->tls->disconnect, transport->tls); return transport->tcp->disconnect(transport->tcp); } @@ -403,6 +405,8 @@ void transport_free(rdpTransport* transport) stream_free(transport->recv_stream); stream_free(transport->send_stream); wait_obj_free(transport->recv_event); + if (transport->tls) + tls_free(transport->tls); tcp_free(transport->tcp); xfree(transport); }