[core,server] add state STATE_RUN_QUIT_SESSION
If a session is terminated indicate this by STATE_RUN_QUIT_SESSION instead of setting STATE_RUN_FAILED which would imply some failure
This commit is contained in:
parent
b03f9cc8b8
commit
1a87ba8fc2
@ -385,7 +385,8 @@ static state_run_t peer_recv_data_pdu(freerdp_peer* client, wStream* s, UINT16 t
|
|||||||
|
|
||||||
case DATA_PDU_TYPE_SHUTDOWN_REQUEST:
|
case DATA_PDU_TYPE_SHUTDOWN_REQUEST:
|
||||||
mcs_send_disconnect_provider_ultimatum(client->context->rdp->mcs);
|
mcs_send_disconnect_provider_ultimatum(client->context->rdp->mcs);
|
||||||
return STATE_RUN_FAILED;
|
WLog_WARN(TAG, "disconnect provider ultimatum sent to peer, closing connection");
|
||||||
|
return STATE_RUN_QUIT_SESSION;
|
||||||
|
|
||||||
case DATA_PDU_TYPE_FRAME_ACKNOWLEDGE:
|
case DATA_PDU_TYPE_FRAME_ACKNOWLEDGE:
|
||||||
if (!Stream_CheckAndLogRequiredLength(TAG, s, 4))
|
if (!Stream_CheckAndLogRequiredLength(TAG, s, 4))
|
||||||
@ -759,6 +760,7 @@ static state_run_t rdp_peer_handle_state_active(freerdp_peer* client)
|
|||||||
}
|
}
|
||||||
if (!client->connected)
|
if (!client->connected)
|
||||||
{
|
{
|
||||||
|
WLog_ERR(TAG, "PostConnect for peer %p failed", client);
|
||||||
ret = STATE_RUN_FAILED;
|
ret = STATE_RUN_FAILED;
|
||||||
}
|
}
|
||||||
else if (!client->activated)
|
else if (!client->activated)
|
||||||
@ -772,7 +774,10 @@ static state_run_t rdp_peer_handle_state_active(freerdp_peer* client)
|
|||||||
IFCALLRET(client->Activate, activated, client);
|
IFCALLRET(client->Activate, activated, client);
|
||||||
|
|
||||||
if (!activated)
|
if (!activated)
|
||||||
|
{
|
||||||
|
WLog_ERR(TAG, "Activate for peer %p failed", client);
|
||||||
ret = STATE_RUN_FAILED;
|
ret = STATE_RUN_FAILED;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
ret = STATE_RUN_SUCCESS;
|
ret = STATE_RUN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,14 @@
|
|||||||
|
|
||||||
BOOL state_run_failed(state_run_t status)
|
BOOL state_run_failed(state_run_t status)
|
||||||
{
|
{
|
||||||
return status == STATE_RUN_FAILED;
|
switch (status)
|
||||||
|
{
|
||||||
|
case STATE_RUN_FAILED:
|
||||||
|
case STATE_RUN_QUIT_SESSION:
|
||||||
|
return TRUE;
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL state_run_success(state_run_t status)
|
BOOL state_run_success(state_run_t status)
|
||||||
@ -53,6 +60,9 @@ const char* state_run_result_string(state_run_t status, char* buffer, size_t buf
|
|||||||
case STATE_RUN_FAILED:
|
case STATE_RUN_FAILED:
|
||||||
name = "STATE_RUN_FAILED";
|
name = "STATE_RUN_FAILED";
|
||||||
break;
|
break;
|
||||||
|
case STATE_RUN_QUIT_SESSION:
|
||||||
|
name = "STATE_RUN_QUIT_SESSION";
|
||||||
|
break;
|
||||||
case STATE_RUN_TRY_AGAIN:
|
case STATE_RUN_TRY_AGAIN:
|
||||||
name = "STATE_RUN_TRY_AGAIN";
|
name = "STATE_RUN_TRY_AGAIN";
|
||||||
break;
|
break;
|
||||||
|
@ -31,6 +31,7 @@ typedef enum
|
|||||||
STATE_RUN_REDIRECT = 1,
|
STATE_RUN_REDIRECT = 1,
|
||||||
STATE_RUN_SUCCESS = 0,
|
STATE_RUN_SUCCESS = 0,
|
||||||
STATE_RUN_FAILED = -1,
|
STATE_RUN_FAILED = -1,
|
||||||
|
STATE_RUN_QUIT_SESSION = -2,
|
||||||
STATE_RUN_TRY_AGAIN = -23,
|
STATE_RUN_TRY_AGAIN = -23,
|
||||||
STATE_RUN_CONTINUE = -24
|
STATE_RUN_CONTINUE = -24
|
||||||
} state_run_t;
|
} state_run_t;
|
||||||
|
Loading…
Reference in New Issue
Block a user