Net-DNS-Resolver-Unbound

 view release on metacpan or  search on metacpan

lib/Net/DNS/Resolver/Unbound.pm  view on Meta::CPAN

		return @value;
	}
	$self->set_fwd() unless @nameservers;
	$self->set_fwd($_) foreach @nameservers;
	return;
}

sub nameserver { return &nameservers }


=head2 search, query, send, bgsend, bgbusy, bgread

See L<Net::DNS::Resolver>.

=cut

use constant UB_SEND => UB_CONTEXT->can('ub_send');

sub send {
	my ( $self, @argument ) = @_;

lib/Net/DNS/Resolver/Unbound.pm  view on Meta::CPAN

	$self->errorstring( $handle->err );
	my $qident = $handle->async_id;

	my $reply = $self->_decode_result( $handle->result ) || return;
	$handle->query->{id} = $reply->_quid;			# zero id replaced by random lie

	$reply->print if $self->debug;
	return $reply;
}

sub bgbusy {
	my ( $self, $handle ) = @_;
	return unless $handle;
	return unless $handle->waiting;
	$self->{ub_ctx}->ub_process;
	eval { select( undef, undef, undef, 0.200 ) };		# avoid tight loop on bgbusy()
	return $handle->waiting;
}


=head2 option

	$resolver->option( 'tls-cert-bundle' => '/etc/ssl/cert.pem' );

Set Unbound resolver (name,value) context option.

t/35-bgread.t  view on Meta::CPAN


use Net::DNS::Resolver::Unbound;

my $resolver = Net::DNS::Resolver::Unbound->new();

plan skip_all => 'resolver not loaded' unless $resolver;
plan tests    => 13;


for ( my $handle = undef ) {
	ok( !$resolver->bgbusy($handle), 'not bgbusy' );
	is( $resolver->bgread($handle), undef, 'undefined bgread' );
}

my $id	= 123;
my $err = -99;

for ( my $handle = Net::DNS::Resolver::libunbound::emulate_wait($id) ) {
	ok( $handle->waiting(),		'handle->waiting' );
	ok( $resolver->bgbusy($handle), 'bgbusy' );
	ok( !$handle->err(),		'no handle->err' );
	ok( !$handle->result(),		'no handle->result' );
}


for ( my $handle = Net::DNS::Resolver::libunbound::emulate_callback( $id, $err ) ) {
	ok( !$handle->waiting(),	 'not handle->waiting' );
	ok( !$resolver->bgbusy($handle), 'not bgbusy' );
	ok( !$handle->result(),		 'no handle->result' );
	ok( $handle->err(),		 'handle->err' );
	is( $handle->async_id(),	$id,   'handle->async_id' );
	is( $resolver->bgread($handle), undef, 'undefined bgread' );
	my $errorstring = $resolver->errorstring;
	like( $errorstring, "/$err/", "errorstring: [$errorstring]" );
}

exit;



( run in 0.548 second using v1.01-cache-2.11-cpan-39bf76dae61 )