aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Cunha <tcunha@gmx.com>2009-11-08 22:56:54 +0000
committerTiago Cunha <tcunha@gmx.com>2009-11-08 22:56:54 +0000
commit7851bb81f5c445422da168393e4f617069c18925 (patch)
tree2eed21794da3af3f35b9f3762e0f60cf5b434089
parent53ef4c2babc3d4bf8df16ba6bbd596d0b9a8240b (diff)
downloadrtmux-7851bb81f5c445422da168393e4f617069c18925.tar.gz
rtmux-7851bb81f5c445422da168393e4f617069c18925.tar.bz2
rtmux-7851bb81f5c445422da168393e4f617069c18925.zip
Sync OpenBSD patchset 494:
Add back JOB_PERSIST checks that got lost.
-rw-r--r--job.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/job.c b/job.c
index ee9fd755..606c244b 100644
--- a/job.c
+++ b/job.c
@@ -1,4 +1,4 @@
-/* $Id: job.c,v 1.11 2009-11-08 22:56:04 tcunha Exp $ */
+/* $Id: job.c,v 1.12 2009-11-08 22:56:54 tcunha Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -126,7 +126,6 @@ job_free(struct job *job)
if (job->fd != -1)
close(job->fd);
-
if (job->event != NULL)
bufferevent_free(job->event);
@@ -201,8 +200,12 @@ job_callback(unused struct bufferevent *bufev, unused short events, void *data)
close(job->fd);
job->fd = -1;
- if (job->pid == -1 && job->callbackfn != NULL)
- job->callbackfn(job);
+ if (job->pid == -1) {
+ if (job->callbackfn != NULL)
+ job->callbackfn(job);
+ if ((!job->flags & JOB_PERSIST))
+ job_free(job);
+ }
}
/* Job died (waitpid() returned its pid). */
@@ -212,8 +215,12 @@ job_died(struct job *job, int status)
job->status = status;
job->pid = -1;
- if (job->fd == -1 && job->callbackfn != NULL)
- job->callbackfn(job);
+ if (job->fd == -1) {
+ if (job->callbackfn != NULL)
+ job->callbackfn(job);
+ if ((!job->flags & JOB_PERSIST))
+ job_free(job);
+ }
}
/* Kill a job. */