summaryrefslogtreecommitdiffstats
path: root/session.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2017-04-28 22:01:18 +0100
committerThomas Adam <thomas@xteddy.org>2017-04-28 22:01:18 +0100
commit3a8e56b282161ab4feb728bfedba77aa35093a0a (patch)
treeac58d53220819d892f1e8177a7cf63ffddac6907 /session.c
parent36202a63e979f41943003d49748eaebe5776bf7f (diff)
parent0f2f783584c62879a1182972e915f550bf23f00a (diff)
Merge branch 'obsd-master'
Diffstat (limited to 'session.c')
-rw-r--r--session.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/session.c b/session.c
index 238d531f..b52b0274 100644
--- a/session.c
+++ b/session.c
@@ -188,13 +188,21 @@ session_create(const char *prefix, const char *name, int argc, char **argv,
return (s);
}
-/* Remove a reference from a session. */
+/* Add a reference to a session. */
void
-session_unref(struct session *s)
+session_add_ref(struct session *s, const char *from)
{
- log_debug("session %s has %d references", s->name, s->references);
+ s->references++;
+ log_debug("%s: %s %s, now %d", __func__, s->name, from, s->references);
+}
+/* Remove a reference from a session. */
+void
+session_remove_ref(struct session *s, const char *from)
+{
s->references--;
+ log_debug("%s: %s %s, now %d", __func__, s->name, from, s->references);
+
if (s->references == 0)
event_once(-1, EV_TIMEOUT, session_free, s, NULL);
}
@@ -247,7 +255,7 @@ session_destroy(struct session *s)
free((void *)s->cwd);
- session_unref(s);
+ session_remove_ref(s, __func__);
}
/* Check a session name is valid: not empty and no colons or periods. */