X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-stub-ws.c;h=136bb3586aa7594f270d3092b6083ba137f325d9;hb=afff776f7e27c8be7610cfbd23c4d1be32699ed9;hp=37607ee0d4afa2c2fd73e3b34a9bc5845aec1e7e;hpb=9e8fda2954d951ea819dbddfe5afe466b2306074;p=src%2Fapp-framework-binder.git diff --git a/src/afb-stub-ws.c b/src/afb-stub-ws.c index 37607ee0..136bb358 100644 --- a/src/afb-stub-ws.c +++ b/src/afb-stub-ws.c @@ -498,14 +498,17 @@ static void record_session(struct afb_stub_ws *stubws, struct afb_session *sessi } } -static void release_sessions(struct afb_stub_ws *stubws) +static void release_all_sessions(struct afb_stub_ws *stubws) { - struct server_session *s; + struct server_session *s, *n; - while((s = stubws->sessions)) { - stubws->sessions = s->next; + s = stubws->sessions; + stubws->sessions = NULL; + while(s) { + n = s->next; afb_session_unref(s->session); free(s); + s = n; } } @@ -654,7 +657,7 @@ static void on_hangup(void *closure) if (stubws->on_hangup) stubws->on_hangup(stubws); - release_sessions(stubws); + release_all_sessions(stubws); afb_stub_ws_unref(stubws); } @@ -712,7 +715,7 @@ void afb_stub_ws_unref(struct afb_stub_ws *stubws) drop_all_events(stubws); if (stubws->listener) afb_evt_listener_unref(stubws->listener); - release_sessions(stubws); + release_all_sessions(stubws); afb_proto_ws_unref(stubws->proto); afb_cred_unref(stubws->cred); afb_apiset_unref(stubws->apiset);