Code Review
/
src
/
app-framework-binder.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
afb-context: Early token change
[src/app-framework-binder.git]
/
src
/
afb-stub-ws.c
diff --git
a/src/afb-stub-ws.c
b/src/afb-stub-ws.c
index
740a857
..
036b494
100644
(file)
--- 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;
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;
*prv = s->next;
- afb_session_
add
ref(s->session);
+ afb_session_
un
ref(s->session);
free(s);
}
free(s);
}
+ else
+ prv = &s->next;
}
/* create */
}
/* create */
@@
-651,10
+651,12
@@
static void on_hangup(void *closure)
{
struct afb_stub_ws *stubws = closure;
{
struct afb_stub_ws *stubws = closure;
+ afb_stub_ws_addref(stubws);
if (stubws->on_hangup)
stubws->on_hangup(stubws);
release_sessions(stubws);
if (stubws->on_hangup)
stubws->on_hangup(stubws);
release_sessions(stubws);
+ afb_stub_ws_unref(stubws);
}
/*****************************************************/
}
/*****************************************************/
@@
-707,7
+709,8
@@
void afb_stub_ws_unref(struct afb_stub_ws *stubws)
{
if (!__atomic_sub_fetch(&stubws->refcount, 1, __ATOMIC_RELAXED)) {
drop_all_events(stubws);
{
if (!__atomic_sub_fetch(&stubws->refcount, 1, __ATOMIC_RELAXED)) {
drop_all_events(stubws);
- afb_evt_listener_unref(stubws->listener);
+ if (stubws->listener)
+ afb_evt_listener_unref(stubws->listener);
release_sessions(stubws);
afb_proto_ws_unref(stubws->proto);
afb_cred_unref(stubws->cred);
release_sessions(stubws);
afb_proto_ws_unref(stubws->proto);
afb_cred_unref(stubws->cred);