fix
diff --git a/lib/fuse.c b/lib/fuse.c
index 7613d38..0f3da23 100644
--- a/lib/fuse.c
+++ b/lib/fuse.c
@@ -10,7 +10,7 @@
 /* For pthread_rwlock_t */
 #define _GNU_SOURCE
 
-#include "fuse.h"
+#include "fuse_i.h"
 #include "fuse_lowlevel.h"
 #include "fuse_compat.h"
 
@@ -110,11 +110,6 @@
     fuse_ino_t nodeid;
 };
 
-struct fuse_cmd {
-    char *buf;
-    size_t buflen;
-};
-
 static struct fuse_context *(*fuse_getcontext)(void) = NULL;
 
 #ifndef USE_UCLIBC
@@ -1643,8 +1638,7 @@
 
 void fuse_process_cmd(struct fuse *f, struct fuse_cmd *cmd)
 {
-    struct fuse_chan *ch = fuse_session_next_chan(f->se, NULL);
-    fuse_session_process(f->se, cmd->buf, cmd->buflen, ch);
+    fuse_session_process(f->se, cmd->buf, cmd->buflen, cmd->ch);
 }
 
 int fuse_exited(struct fuse *f)
@@ -1685,6 +1679,7 @@
             return NULL;
         }
         cmd->buflen = res;
+        cmd->ch = ch;
     }
     return cmd;
 }