X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-session.c;h=6b6ad634170cc1c7820d301e11f64e3db0b83bc0;hb=214006b8633c6676a9f5ed2ab5c16e98829807d1;hp=1cb1d8d84bc46ae0266115741f30c0f56af372c3;hpb=9fcc6c5d9cb59065e57fa24a80a8912516c8c20c;p=src%2Fapp-framework-binder.git diff --git a/src/afb-session.c b/src/afb-session.c index 1cb1d8d8..6b6ad634 100644 --- a/src/afb-session.c +++ b/src/afb-session.c @@ -57,6 +57,7 @@ struct afb_session time_t expiration; // expiration time of the token pthread_mutex_t mutex; struct cookie *cookies[COOKEYCOUNT]; + char autoclose; char idx; char uuid[SIZEUUID]; // long term authentication of remote client char token[SIZEUUID]; // short term authentication of remote client @@ -358,7 +359,7 @@ void afb_session_unref(struct afb_session *session) assert(session->refcount != 0); if (!__atomic_sub_fetch(&session->refcount, 1, __ATOMIC_RELAXED)) { pthread_mutex_lock(&session->mutex); - if (session->uuid[0] == 0) + if (session->autoclose || session->uuid[0] == 0) destroy (session); else pthread_mutex_unlock(&session->mutex); @@ -383,6 +384,13 @@ void afb_session_close (struct afb_session *session) pthread_mutex_unlock(&session->mutex); } +/* set the autoclose flag */ +void afb_session_set_autoclose(struct afb_session *session, int autoclose) +{ + assert(session != NULL); + session->autoclose = (char)!!autoclose; +} + // is the session active? int afb_session_is_active (struct afb_session *session) {