/*
- * Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira, Inc.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <config.h>
#include "process.h"
-#include <assert.h>
#include <errno.h>
#include <fcntl.h>
#include <signal.h>
inited = true;
/* Create notification pipe. */
- xpipe(fds);
- xset_nonblocking(fds[0]);
- xset_nonblocking(fds[1]);
+ xpipe_nonblocking(fds);
/* Set up child termination signal handler. */
memset(&sa, 0, sizeof sa);
struct process *p;
const char *slash;
- assert(sigchld_is_blocked());
+ ovs_assert(sigchld_is_blocked());
p = xzalloc(sizeof *p);
p->pid = pid;
int
process_status(const struct process *p)
{
- assert(p->exited);
+ ovs_assert(p->exited);
return p->status;
}
static int
stream_open(struct stream *s, size_t max_size)
{
+ int error;
+
s->max_size = max_size;
ds_init(&s->log);
if (pipe(s->fds)) {
VLOG_WARN("failed to create pipe: %s", strerror(errno));
return errno;
}
- set_nonblocking(s->fds[0]);
- return 0;
+ error = set_nonblocking(s->fds[0]);
+ if (error) {
+ close(s->fds[0]);
+ close(s->fds[1]);
+ }
+ return error;
}
static void