version 1.35, 2015/04/24 22:19:36 |
version 1.36, 2015/06/17 16:44:49 |
|
|
close(out[1]); |
close(out[1]); |
|
|
job = xmalloc(sizeof *job); |
job = xmalloc(sizeof *job); |
|
job->state = JOB_RUNNING; |
|
|
job->cmd = xstrdup(cmd); |
job->cmd = xstrdup(cmd); |
job->pid = pid; |
job->pid = pid; |
job->status = 0; |
job->status = 0; |
|
|
|
|
log_debug("job error %p: %s, pid %ld", job, job->cmd, (long) job->pid); |
log_debug("job error %p: %s, pid %ld", job, job->cmd, (long) job->pid); |
|
|
if (job->pid == -1) { |
if (job->state == JOB_DEAD) { |
if (job->callbackfn != NULL) |
if (job->callbackfn != NULL) |
job->callbackfn(job); |
job->callbackfn(job); |
job_free(job); |
job_free(job); |
} else { |
} else { |
bufferevent_disable(job->event, EV_READ); |
bufferevent_disable(job->event, EV_READ); |
close(job->fd); |
job->state = JOB_CLOSED; |
job->fd = -1; |
|
} |
} |
} |
} |
|
|
|
|
|
|
job->status = status; |
job->status = status; |
|
|
if (job->fd == -1) { |
if (job->state == JOB_CLOSED) { |
if (job->callbackfn != NULL) |
if (job->callbackfn != NULL) |
job->callbackfn(job); |
job->callbackfn(job); |
job_free(job); |
job_free(job); |
} else |
} else { |
job->pid = -1; |
job->pid = -1; |
|
job->state = JOB_DEAD; |
|
} |
} |
} |