diff options
author | Nicholas Marriott <nicholas.marriott@gmail.com> | 2013-03-13 07:31:36 +0000 |
---|---|---|
committer | Nicholas Marriott <nicholas.marriott@gmail.com> | 2013-03-13 07:31:36 +0000 |
commit | c5ad47ee7c7595c1d0dcf2a226742fd19d548605 (patch) | |
tree | 4046ba5500a5d0bfc9d7dc615536d47996cee0c5 /cmd-queue.c | |
parent | 4d38b6d1fab398b0af6d22281d0d4b35448524f7 (diff) | |
download | rtmux-c5ad47ee7c7595c1d0dcf2a226742fd19d548605.tar.gz rtmux-c5ad47ee7c7595c1d0dcf2a226742fd19d548605.tar.bz2 rtmux-c5ad47ee7c7595c1d0dcf2a226742fd19d548605.zip |
Only send end guard if begin was sent, from George Nachman.
Diffstat (limited to 'cmd-queue.c')
-rw-r--r-- | cmd-queue.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/cmd-queue.c b/cmd-queue.c index 17992a37..6ea6f468 100644 --- a/cmd-queue.c +++ b/cmd-queue.c @@ -152,19 +152,20 @@ cmdq_error(struct cmd_q *cmdq, const char *fmt, ...) } /* Print a guard line. */ -void +int cmdq_guard(struct cmd_q *cmdq, const char *guard) { struct client *c = cmdq->client; if (c == NULL || c->session == NULL) - return; + return 0; if (!(c->flags & CLIENT_CONTROL)) - return; + return 0; evbuffer_add_printf(c->stdout_data, "%%%s %ld %u\n", guard, (long) cmdq->time, cmdq->number); server_push_stdout(c); + return 1; } /* Add command list to queue and begin processing if needed. */ @@ -197,7 +198,7 @@ cmdq_continue(struct cmd_q *cmdq) { struct cmd_q_item *next; enum cmd_retval retval; - int empty; + int empty, guard; char s[1024]; notify_disable(); @@ -223,12 +224,14 @@ cmdq_continue(struct cmd_q *cmdq) cmdq->time = time(NULL); cmdq->number++; - cmdq_guard(cmdq, "begin"); + guard = cmdq_guard(cmdq, "begin"); retval = cmdq->cmd->entry->exec(cmdq->cmd, cmdq); - if (retval == CMD_RETURN_ERROR) - cmdq_guard(cmdq, "error"); - else - cmdq_guard(cmdq, "end"); + if (guard) { + if (retval == CMD_RETURN_ERROR) + cmdq_guard(cmdq, "error"); + else + cmdq_guard(cmdq, "end"); + } if (retval == CMD_RETURN_ERROR) break; |