Subject: | udp_connection will die if send fails |
* Distribution name and version:
Net::DNS 0.57
* Perl version (Find this by running the command perl -v)
Summary of my perl5 (revision 5 version 8 subversion 6) configuration:
Platform:
osname=openbsd, osvers=3.8, archname=amd64-openbsd
uname='openbsd'
config_args='-dsE -Dopenbsd_distribution=defined'
hint=recommended, useposix=true, d_sigaction=define
usethreads=undef use5005threads=undef useithreads=undef
usemultiplicity=undef
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=define use64bitall=define uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-fno-strict-aliasing
-fno-delete-null-pointer-checks -pipe -I/usr/local/include',
optimize='-O2',
cppflags='-fno-strict-aliasing -fno-delete-null-pointer-checks -pipe
-I/usr/local/include'
ccversion='', gccversion='3.3.5 (propolice)', gccosandvers='openbsd3.8'
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='cc', ldflags ='-Wl,-E '
libpth=/usr/lib
libs=-lm -lutil -lc
perllibs=-lm -lutil -lc
libc=/usr/lib/libc.so.38.2, so=so, useshrplib=true,
libperl=libperl.so.10.0
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef,
ccdlflags='-Wl,-R/usr/libdata/perl5/amd64-openbsd/5.8.6/CORE'
cccdlflags='-DPIC -fPIC ', lddlflags='-shared -fPIC '
Characteristics of this binary (from libperl):
Compile-time options: USE_64_BIT_INT USE_64_BIT_ALL USE_LARGE_FILES
Locally applied patches:
SUIDPERLIO1 - fix PERLIO_DEBUG buffer overflow (CAN-2005-0156)
SPRINTF0 - fixes for sprintf formatting issues - CVE-2005-3962
Built under openbsd
@INC:
/usr/libdata/perl5/amd64-openbsd/5.8.6
/usr/local/libdata/perl5/amd64-openbsd/5.8.6
/usr/libdata/perl5
/usr/local/libdata/perl5
/usr/local/libdata/perl5/site_perl/amd64-openbsd
/usr/libdata/perl5/site_perl/amd64-openbsd
/usr/local/libdata/perl5/site_perl
/usr/libdata/perl5/site_perl
/usr/local/lib/perl5/site_perl
.
* Operating System vendor and version:
OpenBSD localhost.localdomain 3.8 GENERIC.MP#1 amd64
* Problem Description:
On line 376 of Nameserver.pm, there is a die that shouldn't be there.
If you fail to send a packet, you shouldnt stop processing more packets,
there might have just been a hiccup in the network. Attached is
Nameserver.pm where the die has been removed, and if there is an error,
a message is printed.
For the short term, can you please remove that die from the code,
something like i have done in the attached file. Later when you have
more time, can you can look at the exceptions that actually caused the die?
Thank you!
-Darrian
Below are some exceptions that I encountered that caused this die to occur:
Uncaught exception from user code:
send: No buffer space available at
/usr/local/libdata/perl5/site_perl/amd64-openbsd/Net/DNS/Nameserver.pm
line 376.
at
/usr/local/libdata/perl5/site_perl/amd64-openbsd/Net/DNS/Nameserver.pm
line 376
Net::DNS::Nameserver::udp_connection('Net::DNS::Nameserver=HASH(0x4d735610)',
'IO::Socket::INET=GLOB(0x454c8d80)') called at
/usr/local/libdata/perl5/site_perl/amd64-openbsd/Net/DNS/Nameserver.pm
line 416
Net::DNS::Nameserver::loop_once('Net::DNS::Nameserver=HASH(0x4d735610)',
10) called at
/usr/local/libdata/perl5/site_perl/amd64-openbsd/Net/DNS/Nameserver.pm
line 489
Net::DNS::Nameserver::main_loop('Net::DNS::Nameserver=HASH(0x4d735610)')
called at /var/www/bin/proxydnsserver.pl line 103
killed 0 states from 1 sources and 1 destinations
Uncaught exception from user code:
send: No route to host at
/usr/local/libdata/perl5/site_perl/amd64-openbsd/Net/DNS/Nameserver.pm
line 376.
at
/usr/local/libdata/perl5/site_perl/amd64-openbsd/Net/DNS/Nameserver.pm
line 376
Net::DNS::Nameserver::udp_connection('Net::DNS::Nameserver=HASH(0x48bfadc0)',
'IO::Socket::INET=GLOB(0x40625d30)') called at
/usr/local/libdata/perl5/site_perl/amd64-openbsd/Net/DNS/Nameserver.pm
line 416
Net::DNS::Nameserver::loop_once('Net::DNS::Nameserver=HASH(0x48bfadc0)',
10) called at
/usr/local/libdata/perl5/site_perl/amd64-openbsd/Net/DNS/Nameserver.pm
line 489
Net::DNS::Nameserver::main_loop('Net::DNS::Nameserver=HASH(0x48bfadc0)')
called at /var/www/bin/proxydnsserver.pl line 103
Subject: | Nameserver.pm |
Message body is not shown because it is too large.