1
0
mirror of https://github.com/falk-werner/webfuse-provider synced 2024-10-27 20:44:10 +00:00

added error handling on authentication failure

This commit is contained in:
Falk Werner 2020-03-01 11:06:09 +01:00
parent af2343c67a
commit f79b9c998a
2 changed files with 27 additions and 16 deletions

View File

@ -73,6 +73,7 @@ wfp_impl_client_protocol_on_authenticate_finished(
json_t const * WF_UNUSED_PARAM(error))
{
struct wfp_client_protocol * protocol = user_data;
if (NULL == protocol->wsi) { return; }
if (NULL != result)
{
@ -81,9 +82,9 @@ wfp_impl_client_protocol_on_authenticate_finished(
}
else
{
// ToDo: handle error
protocol->is_shutdown_requested = true;
lws_callback_on_writable(protocol->wsi);
}
}
static void wfp_impl_client_protocol_add_filesystem(
@ -105,6 +106,7 @@ static int wfp_impl_client_protocol_callback(
void * in,
size_t len)
{
int result = 0;
struct lws_protocols const * ws_protocol = lws_get_protocol(wsi);
struct wfp_client_protocol * protocol = (NULL != ws_protocol) ? ws_protocol->user: NULL;
@ -124,6 +126,7 @@ static int wfp_impl_client_protocol_callback(
case LWS_CALLBACK_CLIENT_CLOSED:
protocol->is_connected = false;
protocol->provider.disconnected(protocol->user_data);
protocol->wsi = NULL;
break;
case LWS_CALLBACK_CLIENT_RECEIVE:
wfp_impl_client_protocol_process(protocol, in, len);
@ -131,7 +134,13 @@ static int wfp_impl_client_protocol_callback(
case LWS_CALLBACK_SERVER_WRITEABLE:
// fall-through
case LWS_CALLBACK_CLIENT_WRITEABLE:
if ((wsi == protocol->wsi) && (!wf_slist_empty(&protocol->messages)))
if (wsi == protocol->wsi)
{
if (protocol->is_shutdown_requested)
{
result = 1;
}
else if (!wf_slist_empty(&protocol->messages))
{
struct wf_slist_item * item = wf_slist_remove_first(&protocol->messages);
struct wf_message * message = wf_container_of(item, struct wf_message, item);
@ -141,7 +150,7 @@ static int wfp_impl_client_protocol_callback(
if (!wf_slist_empty(&protocol->messages))
{
lws_callback_on_writable(wsi);
}
}
}
break;
@ -150,7 +159,7 @@ static int wfp_impl_client_protocol_callback(
}
}
return 0;
return result;
}
static bool wfp_impl_client_protocol_send(
@ -177,6 +186,7 @@ void wfp_impl_client_protocol_init(
void * user_data)
{
protocol->is_connected = false;
protocol->is_shutdown_requested = false;
wf_slist_init(&protocol->messages);
protocol->wsi = NULL;

View File

@ -20,6 +20,7 @@ struct wf_timer_manager;
struct wfp_client_protocol
{
bool is_connected;
bool is_shutdown_requested;
struct wfp_request request;
struct wfp_provider provider;
void * user_data;