Net-DNS-Native
view release on metacpan or search on metacpan
croak("pthread_create(): %s", strerror(rc));
}
}
RETVAL = fd[0];
OUTPUT:
RETVAL
void
_get_result(Net_DNS_Native *self, int fd)
PPCODE:
pthread_mutex_lock(&self->mutex);
DNS_result *res = bstree_get(self->fd_map, fd);
bstree_del(self->fd_map, fd);
pthread_mutex_unlock(&self->mutex);
if (res == NULL) croak("attempt to get result which doesn't exists");
if (!res->arg) {
pthread_mutex_lock(&self->mutex);
bstree_put(self->fd_map, fd, res);
pthread_mutex_unlock(&self->mutex);
close(fd);
close(res->fd1);
if (res->arg->hints) free(res->arg->hints);
if (res->arg->host) Safefree(res->arg->host);
if (res->arg->service) Safefree(res->arg->service);
free(res->arg);
free(res);
void
_timedout(Net_DNS_Native *self, int fd)
PPCODE:
char unknown = 0;
pthread_mutex_lock(&self->mutex);
if (bstree_get(self->fd_map, fd) == NULL) {
unknown = 1;
}
else {
queue_push(self->tout_queue, (void*)(intptr_t)fd);
}
pthread_mutex_unlock(&self->mutex);
}
pthread_attr_destroy(&self->thread_attrs);
pthread_mutex_destroy(&self->mutex);
pthread_cond_destroy(&self->cv);
bstree_destroy(self->fd_map);
queue_destroy(self->tout_queue);
Safefree(self);
void
pack_sockaddr_in6(int port, SV *sv_address)
PPCODE:
STRLEN len;
char *address = SvPV(sv_address, len);
if (len != 16)
croak("address length is %lu should be 16", len);
struct sockaddr_in6 *addr = malloc(sizeof(struct sockaddr_in6));
memcpy(addr->sin6_addr.s6_addr, address, 16);
addr->sin6_family = AF_INET6;
addr->sin6_port = port;
XPUSHs(sv_2mortal(newSVpvn((char*) addr, sizeof(struct sockaddr_in6))));
void
unpack_sockaddr_in6(SV *sv_addr)
PPCODE:
STRLEN len;
char *addr = SvPV(sv_addr, len);
if (len != sizeof(struct sockaddr_in6))
croak("address length is %lu should be %lu", len, sizeof(struct sockaddr_in6));
struct sockaddr_in6 *struct_addr = (struct sockaddr_in6*) addr;
XPUSHs(sv_2mortal(newSViv(struct_addr->sin6_port)));
XPUSHs(sv_2mortal(newSVpvn((char*)struct_addr->sin6_addr.s6_addr, 16)));
int
( run in 0.538 second using v1.01-cache-2.11-cpan-5511b514fd6 )