diff options
Diffstat (limited to 'cmd-queue.c')
-rw-r--r-- | cmd-queue.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/cmd-queue.c b/cmd-queue.c index af987f59..1fe34dce 100644 --- a/cmd-queue.c +++ b/cmd-queue.c @@ -35,7 +35,7 @@ cmdq_new(struct client *c) cmdq = xcalloc(1, sizeof *cmdq); cmdq->references = 1; - cmdq->dead = 0; + cmdq->flags = 0; cmdq->client = c; cmdq->client_exit = -1; @@ -51,8 +51,11 @@ cmdq_new(struct client *c) int cmdq_free(struct cmd_q *cmdq) { - if (--cmdq->references != 0) - return (cmdq->dead); + if (--cmdq->references != 0) { + if (cmdq->flags & CMD_Q_DEAD) + return (1); + return (0); + } cmdq_flush(cmdq); free(cmdq); @@ -192,6 +195,7 @@ cmdq_continue_one(struct cmd_q *cmdq) int cmdq_continue(struct cmd_q *cmdq) { + struct client *c = cmdq->client; struct cmd_q_item *next; enum cmd_retval retval; int empty; @@ -199,6 +203,9 @@ cmdq_continue(struct cmd_q *cmdq) cmdq->references++; notify_disable(); + log_debug("continuing cmdq %p: flags=%#x, client=%d", cmdq, cmdq->flags, + c != NULL ? c->ibuf.fd : -1); + empty = TAILQ_EMPTY(&cmdq->queue); if (empty) goto empty; |