AnyEvent-FDpasser
view release on metacpan or search on metacpan
FDpasser.xs view on Meta::CPAN
return 2;
}
/* FIXME: double-check these functions for descriptor leaks */
static int _fdpasser_server(char *path) {
int fds[2];
int filefd;
int rv;
int backup_errno;
unlink(path);
filefd = creat(path, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
if (filefd < 0) {
return -1;
}
close(filefd);
rv = pipe(fds);
if (rv < 0) return -1;
rv = ioctl(fds[1], I_PUSH, "connld");
if (rv != 0) {
backup_errno = errno;
close(fds[0]);
close(fds[1]);
errno = backup_errno;
return -1;
}
rv = fattach(fds[1], path);
if (rv < 0) {
backup_errno = errno;
close(fds[0]);
close(fds[1]);
errno = backup_errno;
return -1;
}
return fds[0];
}
static int _fdpasser_accept(char fd) {
struct strrecvfd recvfd;
int rv;
( run in 1.513 second using v1.01-cache-2.11-cpan-49f99fa48dc )