mirror of https://github.com/FreeRDP/FreeRDP
Fixed rdp_reset error handling
This commit is contained in:
parent
680dc81bad
commit
56648a98f2
|
@ -391,7 +391,9 @@ BOOL rdp_client_disconnect(rdpRdp* rdp)
|
|||
if (!nego_disconnect(rdp->nego))
|
||||
return FALSE;
|
||||
|
||||
rdp_reset(rdp);
|
||||
if (!rdp_reset(rdp))
|
||||
return FALSE;
|
||||
|
||||
rdp_client_transition_to_state(rdp, CONNECTION_STATE_INITIAL);
|
||||
|
||||
if (freerdp_channels_disconnect(context->channels, context->instance) != CHANNEL_RC_OK)
|
||||
|
|
|
@ -1894,7 +1894,7 @@ fail:
|
|||
return NULL;
|
||||
}
|
||||
|
||||
void rdp_reset(rdpRdp* rdp)
|
||||
BOOL rdp_reset(rdpRdp* rdp)
|
||||
{
|
||||
rdpContext* context;
|
||||
rdpSettings* settings;
|
||||
|
@ -1950,17 +1950,24 @@ void rdp_reset(rdpRdp* rdp)
|
|||
license_free(rdp->license);
|
||||
transport_free(rdp->transport);
|
||||
fastpath_free(rdp->fastpath);
|
||||
|
||||
rdp->transport = transport_new(context);
|
||||
if (rdp->io && rdp->transport)
|
||||
transport_set_io_callbacks(rdp->transport, rdp->io);
|
||||
if (rdp->transport)
|
||||
{
|
||||
if (rdp->io)
|
||||
transport_set_io_callbacks(rdp->transport, rdp->io);
|
||||
|
||||
rdp->nego = nego_new(rdp->transport);
|
||||
rdp->mcs = mcs_new(rdp->transport);
|
||||
transport_set_layer(rdp->transport, TRANSPORT_LAYER_TCP);
|
||||
}
|
||||
rdp->license = license_new(rdp);
|
||||
rdp->nego = nego_new(rdp->transport);
|
||||
rdp->mcs = mcs_new(rdp->transport);
|
||||
rdp->fastpath = fastpath_new(rdp);
|
||||
transport_set_layer(rdp->transport, TRANSPORT_LAYER_TCP);
|
||||
rdp->errorInfo = 0;
|
||||
rdp->deactivation_reactivation = 0;
|
||||
rdp->finalize_sc_pdus = 0;
|
||||
|
||||
return rdp->transport && rdp->nego && rdp->mcs && rdp->fastpath && rdp->license;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -224,7 +224,7 @@ FREERDP_LOCAL int rdp_recv_callback(rdpTransport* transport, wStream* s, void* e
|
|||
FREERDP_LOCAL int rdp_check_fds(rdpRdp* rdp);
|
||||
|
||||
FREERDP_LOCAL rdpRdp* rdp_new(rdpContext* context);
|
||||
FREERDP_LOCAL void rdp_reset(rdpRdp* rdp);
|
||||
FREERDP_LOCAL BOOL rdp_reset(rdpRdp* rdp);
|
||||
FREERDP_LOCAL void rdp_free(rdpRdp* rdp);
|
||||
|
||||
FREERDP_LOCAL const rdpTransportIo* rdp_get_io_callbacks(rdpRdp* rdp);
|
||||
|
|
Loading…
Reference in New Issue