server: handle mstsc disconnection correctly.
This commit is contained in:
parent
27d403e01a
commit
30dfae976f
@ -792,6 +792,26 @@ boolean mcs_send_channel_join_confirm(rdpMcs* mcs, uint16 channel_id)
|
||||
return True;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send MCS Disconnect Provider Ultimatum PDU.\n
|
||||
* @param mcs mcs module
|
||||
*/
|
||||
|
||||
boolean mcs_send_disconnect_provider_ultimatum(rdpMcs* mcs)
|
||||
{
|
||||
STREAM* s;
|
||||
uint16 length = 9;
|
||||
s = transport_send_stream_init(mcs->transport, 9);
|
||||
|
||||
mcs_write_domain_mcspdu_header(s, DomainMCSPDU_DisconnectProviderUltimatum, length, 1);
|
||||
|
||||
per_write_enumerated(s, 0, 0); /* reason */
|
||||
|
||||
transport_write(mcs->transport, s);
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiate new MCS module.
|
||||
* @param transport transport
|
||||
|
@ -146,6 +146,7 @@ boolean mcs_recv_channel_join_request(rdpMcs* mcs, STREAM* s, uint16* channel_id
|
||||
boolean mcs_send_channel_join_request(rdpMcs* mcs, uint16 channel_id);
|
||||
boolean mcs_recv_channel_join_confirm(rdpMcs* mcs, STREAM* s, uint16* channel_id);
|
||||
boolean mcs_send_channel_join_confirm(rdpMcs* mcs, uint16 channel_id);
|
||||
boolean mcs_send_disconnect_provider_ultimatum(rdpMcs* mcs);
|
||||
boolean mcs_read_domain_mcspdu_header(STREAM* s, enum DomainMCSPDU* domainMCSPDU, uint16* length);
|
||||
void mcs_write_domain_mcspdu_header(STREAM* s, enum DomainMCSPDU domainMCSPDU, uint16 length, uint8 options);
|
||||
|
||||
|
@ -89,6 +89,10 @@ static boolean peer_recv_data_pdu(rdpPeer* peer, STREAM* s)
|
||||
}
|
||||
break;
|
||||
|
||||
case DATA_PDU_TYPE_SHUTDOWN_REQUEST:
|
||||
mcs_send_disconnect_provider_ultimatum(peer->rdp->mcs);
|
||||
return False;
|
||||
|
||||
default:
|
||||
printf("Data PDU type %d\n", type);
|
||||
break;
|
||||
|
@ -124,6 +124,7 @@ boolean tls_accept(rdpTls* tls, const char* cert_file, const char* privatekey_fi
|
||||
|
||||
boolean tls_disconnect(rdpTls* tls)
|
||||
{
|
||||
SSL_shutdown(tls->ssl);
|
||||
return True;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user