From 21f5635037bc46bb36e86d3da50b3fcaa6453776 Mon Sep 17 00:00:00 2001 From: Shane Bryldt Date: Tue, 18 Apr 2017 15:10:34 -0500 Subject: [PATCH] FS-10167: Small fix, made state volatile in session and connection to prevent odd behaviour by the GCC compiler under linux --- libs/libblade/src/blade_connection.c | 2 +- libs/libblade/src/blade_module_wss.c | 2 +- libs/libblade/src/blade_session.c | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libs/libblade/src/blade_connection.c b/libs/libblade/src/blade_connection.c index 61c4b481f3..66d354e00f 100644 --- a/libs/libblade/src/blade_connection.c +++ b/libs/libblade/src/blade_connection.c @@ -42,7 +42,7 @@ struct blade_connection_s { blade_connection_direction_t direction; ks_thread_t *state_thread; - blade_connection_state_t state; + volatile blade_connection_state_t state; const char *id; ks_rwl_t *lock; diff --git a/libs/libblade/src/blade_module_wss.c b/libs/libblade/src/blade_module_wss.c index b1dcb42427..881346c0ff 100644 --- a/libs/libblade/src/blade_module_wss.c +++ b/libs/libblade/src/blade_module_wss.c @@ -1012,7 +1012,7 @@ blade_connection_state_hook_t blade_transport_wss_on_state_attach_inbound(blade_ if (json_req) cJSON_Delete(json_req); if (json_res) cJSON_Delete(json_res); - + return ret; } diff --git a/libs/libblade/src/blade_session.c b/libs/libblade/src/blade_session.c index 0af5eeaad4..04aac39dfa 100644 --- a/libs/libblade/src/blade_session.c +++ b/libs/libblade/src/blade_session.c @@ -37,7 +37,7 @@ struct blade_session_s { blade_handle_t *handle; ks_pool_t *pool; - blade_session_state_t state; + volatile blade_session_state_t state; const char *id; ks_rwl_t *lock; @@ -180,7 +180,7 @@ KS_DECLARE(ks_status_t) blade_session_startup(blade_session_t *bs) ks_assert(tpool); blade_session_state_set(bs, BLADE_SESSION_STATE_NONE); - + if (ks_thread_pool_add_job(tpool, blade_session_state_thread, bs) != KS_STATUS_SUCCESS) { // @todo error logging return KS_STATUS_FAIL; @@ -470,7 +470,7 @@ void *blade_session_state_thread(ks_thread_t *thread, void *data) ks_assert(data); bs = (blade_session_t *)data; - + ks_mutex_lock(bs->mutex); while (!shutdown) { @@ -490,7 +490,7 @@ void *blade_session_state_thread(ks_thread_t *thread, void *data) cJSON_Delete(json); } } - + blade_handle_session_state_callbacks_execute(bs, BLADE_SESSION_STATE_CONDITION_POST); switch (state) {