do {
len = send(sock, message, n, 0);
} while (len < 0 && errno == EINTR);
+ free(message);
memset(&msg, 0, sizeof msg);
iov.iov_base = &ret;
if (len != sizeof ret ||
ret < 0)
- goto out;
+ return -1;
cmsg = CMSG_FIRSTHDR(&msg);
if (!cmsg ||
cmsg->cmsg_level != SOL_SOCKET ||
cmsg->cmsg_type != SCM_RIGHTS) {
fprintf(stderr, "invalid control message\n");
- goto out;
+ return -1;
}
data = (union cmsg_data *) CMSG_DATA(cmsg);
return -1;
}
-out:
- free(message);
- return ret < 0 ? ret : data->fd;
+ return data->fd;
}
int