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 )