diff options
author | Saya Sugiura <ssugiura@jp.adit-jv.com> | 2019-03-20 16:41:52 +0900 |
---|---|---|
committer | Saya Sugiura <ssugiura@jp.adit-jv.com> | 2019-03-27 10:44:24 +0900 |
commit | c7c8c6f69ad136336da2833bbb2f513d461d9177 (patch) | |
tree | b4daa26ac3580941408c0c8a59746eb9053dcf2a /src | |
parent | 417b4156e2f95d726d148d17351c8c90e595613d (diff) | |
download | DLT-daemon-c7c8c6f69ad136336da2833bbb2f513d461d9177.tar.gz |
lib: Add mq_close/mq_unlink conditions
Even if network trace is not used in the application, the library
will call mq_close() and mq_unlink() to segmented queue handles
and queue names, which triggers unnecessary close(). It is now
modified to call mq_close() and mq_unlink() only when network trace
is initialized.
Signed-off-by: Saya Sugiura <ssugiura@jp.adit-jv.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/dlt_user.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c index 66ffd0b..cb7f570 100644 --- a/src/lib/dlt_user.c +++ b/src/lib/dlt_user.c @@ -922,11 +922,18 @@ DltReturnValue dlt_free(void) * Ignore errors from these, to not to spam user if dlt_free * is accidentally called multiple times. */ - mq_close(dlt_user.dlt_segmented_queue_write_handle); - mq_close(dlt_user.dlt_segmented_queue_read_handle); - dlt_user.dlt_segmented_queue_write_handle = -1; - dlt_user.dlt_segmented_queue_read_handle = -1; - mq_unlink(queue_name); + if (dlt_user.dlt_segmented_queue_write_handle > 0) + mq_close(dlt_user.dlt_segmented_queue_write_handle); + + if (dlt_user.dlt_segmented_queue_read_handle > 0) + mq_close(dlt_user.dlt_segmented_queue_read_handle); + + if ((dlt_user.dlt_segmented_queue_write_handle > 0) || + (dlt_user.dlt_segmented_queue_read_handle > 0)) + mq_unlink(queue_name); + + dlt_user.dlt_segmented_queue_write_handle = DLT_FD_INIT; + dlt_user.dlt_segmented_queue_read_handle = DLT_FD_INIT; pthread_cond_destroy(&mq_init_condition); pthread_mutex_destroy(&mq_mutex); |