X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-stub-ws.c;h=164759271ac9f9d172ca124c59010ff6cacb9bd7;hb=52f9783ce6b488f178f26ec07e9e11ae4442e178;hp=d5355ff804595ee02b59021529868b98a7c1c7e5;hpb=9fcc6c5d9cb59065e57fa24a80a8912516c8c20c;p=src%2Fapp-framework-binder.git diff --git a/src/afb-stub-ws.c b/src/afb-stub-ws.c index d5355ff8..16475927 100644 --- a/src/afb-stub-ws.c +++ b/src/afb-stub-ws.c @@ -481,13 +481,13 @@ static void record_session(struct afb_stub_ws *stubws, struct afb_session *sessi while ((s = *prv)) { if (s->session == session) return; - if (afb_session_is_active(s->session)) - prv = &s->next; - else { + if (afb_session_is_closed(s->session)) { *prv = s->next; - afb_session_addref(s->session); + afb_session_unref(s->session); free(s); } + else + prv = &s->next; } /* create */ @@ -533,6 +533,8 @@ static void on_call(void *closure, struct afb_proto_ws_call *call, const char *v goto unconnected; wreq->xreq.context.validated = 1; record_session(stubws, wreq->xreq.context.session); + if (wreq->xreq.context.created) + afb_session_set_autoclose(wreq->xreq.context.session, 1); /* makes the call */ wreq->xreq.cred = afb_cred_addref(stubws->cred);