From: Lennart L. <len...@er...> - 2014-05-23 14:46:16
|
osaf/services/saf/logsv/lgs/lgs_file.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) Fix: - Accept answer from file thread if answer is created if timeout - Prepare for handling new request also if timeout diff --git a/osaf/services/saf/logsv/lgs/lgs_file.c b/osaf/services/saf/logsv/lgs/lgs_file.c --- a/osaf/services/saf/logsv/lgs/lgs_file.c +++ b/osaf/services/saf/logsv/lgs/lgs_file.c @@ -338,12 +338,12 @@ lgsf_retcode_t log_file_api(lgsf_apipar_ while (lgs_com_data.answer_f == false) { rc = pthread_cond_timedwait( &answer_cv, &lgs_ftcom_mutex, &timeout_time); /* -> UNLOCK -> LOCK */ - if (rc == ETIMEDOUT) { + if ((rc == ETIMEDOUT) && (lgs_com_data.answer_f == false)) { TRACE("Timed out before answer"); api_rc = LGSF_TIMEOUT; lgs_com_data.timeout_f = true; /* Inform thread about timeout */ - goto api_exit; - } else if (rc != 0) { + goto api_timeout; + } else if ((rc != 0) && (rc != ETIMEDOUT)) { TRACE("pthread wait Failed - %s",strerror(rc)); osaf_abort(rc); } @@ -358,6 +358,7 @@ lgsf_retcode_t log_file_api(lgsf_apipar_ apipar_in->hdl_ret_code_out = lgs_com_data.return_code; memcpy(apipar_in->data_out, lgs_com_data.outdata_ptr, lgs_com_data.outdata_size); +api_timeout: /* Prepare to take a new answer */ lgs_com_data.answer_f = false; lgs_com_data.return_code = LGSF_NORETC; |