Added ConnectionStateChangeEvent for clients
Clients can now subscribe to connection state change events to prevend data from being transmitted on sessions being redirected.
This commit is contained in:
parent
6d04c0831c
commit
f9c2d5bab9
@ -71,6 +71,11 @@ extern "C"
|
|||||||
BOOL firstActivation;
|
BOOL firstActivation;
|
||||||
DEFINE_EVENT_END(Activated)
|
DEFINE_EVENT_END(Activated)
|
||||||
|
|
||||||
|
DEFINE_EVENT_BEGIN(ConnectionStateChange)
|
||||||
|
int state;
|
||||||
|
BOOL active;
|
||||||
|
DEFINE_EVENT_END(ConnectionStateChange)
|
||||||
|
|
||||||
DEFINE_EVENT_BEGIN(Terminate)
|
DEFINE_EVENT_BEGIN(Terminate)
|
||||||
int code;
|
int code;
|
||||||
DEFINE_EVENT_END(Terminate)
|
DEFINE_EVENT_END(Terminate)
|
||||||
|
@ -1194,6 +1194,14 @@ int rdp_client_transition_to_state(rdpRdp* rdp, int state)
|
|||||||
|
|
||||||
case CONNECTION_STATE_ACTIVE:
|
case CONNECTION_STATE_ACTIVE:
|
||||||
rdp->state = CONNECTION_STATE_ACTIVE;
|
rdp->state = CONNECTION_STATE_ACTIVE;
|
||||||
|
{
|
||||||
|
ActivatedEventArgs activatedEvent;
|
||||||
|
rdpContext* context = rdp->context;
|
||||||
|
EventArgsInit(&activatedEvent, "libfreerdp");
|
||||||
|
activatedEvent.firstActivation = !rdp->deactivation_reactivation;
|
||||||
|
PubSub_OnActivated(context->pubSub, context, &activatedEvent);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -1201,6 +1209,15 @@ int rdp_client_transition_to_state(rdpRdp* rdp, int state)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ConnectionStateChangeEventArgs stateEvent;
|
||||||
|
rdpContext* context = rdp->context;
|
||||||
|
EventArgsInit(&stateEvent, "libfreerdp");
|
||||||
|
stateEvent.state = rdp->state;
|
||||||
|
stateEvent.active = rdp->state == CONNECTION_STATE_ACTIVE;
|
||||||
|
PubSub_OnConnectionStateChange(context->pubSub, context, &stateEvent);
|
||||||
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1648,12 +1648,7 @@ int rdp_recv_callback(rdpTransport* transport, wStream* s, void* extra)
|
|||||||
|
|
||||||
if ((status >= 0) && (rdp->finalize_sc_pdus == FINALIZE_SC_COMPLETE))
|
if ((status >= 0) && (rdp->finalize_sc_pdus == FINALIZE_SC_COMPLETE))
|
||||||
{
|
{
|
||||||
ActivatedEventArgs activatedEvent;
|
|
||||||
rdpContext* context = rdp->context;
|
|
||||||
rdp_client_transition_to_state(rdp, CONNECTION_STATE_ACTIVE);
|
rdp_client_transition_to_state(rdp, CONNECTION_STATE_ACTIVE);
|
||||||
EventArgsInit(&activatedEvent, "libfreerdp");
|
|
||||||
activatedEvent.firstActivation = !rdp->deactivation_reactivation;
|
|
||||||
PubSub_OnActivated(context->pubSub, context, &activatedEvent);
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user