diff options
author | Thomas Adam <thomas@xteddy.org> | 2017-04-28 22:01:18 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2017-04-28 22:01:18 +0100 |
commit | 3a8e56b282161ab4feb728bfedba77aa35093a0a (patch) | |
tree | ac58d53220819d892f1e8177a7cf63ffddac6907 /session.c | |
parent | 36202a63e979f41943003d49748eaebe5776bf7f (diff) | |
parent | 0f2f783584c62879a1182972e915f550bf23f00a (diff) | |
download | rtmux-3a8e56b282161ab4feb728bfedba77aa35093a0a.tar.gz rtmux-3a8e56b282161ab4feb728bfedba77aa35093a0a.tar.bz2 rtmux-3a8e56b282161ab4feb728bfedba77aa35093a0a.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'session.c')
-rw-r--r-- | session.c | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -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. */ |