aboutsummaryrefslogtreecommitdiffstats
path: root/lib/fuse_session.c
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2006-03-17 15:05:40 +0000
committerMiklos Szeredi <miklos@szeredi.hu>2006-03-17 15:05:40 +0000
commit6f385414b27e929bd14435ea8342cde4bae0ef8d (patch)
treec5a557fa053ebd9d96331f9d620d96a80a1282bd /lib/fuse_session.c
parent9db31dc1cff5ae2e854649f039f319d45eb58cf3 (diff)
downloadlibfuse-6f385414b27e929bd14435ea8342cde4bae0ef8d.tar.gz
fix
Diffstat (limited to 'lib/fuse_session.c')
-rw-r--r--lib/fuse_session.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/fuse_session.c b/lib/fuse_session.c
index 8943204..040645b 100644
--- a/lib/fuse_session.c
+++ b/lib/fuse_session.c
@@ -59,6 +59,16 @@ void fuse_session_add_chan(struct fuse_session *se, struct fuse_chan *ch)
ch->se = se;
}
+void fuse_session_remove_chan(struct fuse_chan *ch)
+{
+ struct fuse_session *se = ch->se;
+ if (se) {
+ assert(se->ch == ch);
+ se->ch = NULL;
+ ch->se = NULL;
+ }
+}
+
struct fuse_chan *fuse_session_next_chan(struct fuse_session *se,
struct fuse_chan *ch)
{
@@ -162,6 +172,7 @@ int fuse_chan_send(struct fuse_chan *ch, const struct iovec iov[], size_t count)
void fuse_chan_destroy(struct fuse_chan *ch)
{
+ fuse_session_remove_chan(ch);
if (ch->op.destroy)
ch->op.destroy(ch);
free(ch);