IO modules causing issues in Net::DNS module?

------_=_NextPart_001_01CAD72B.3BF72B9F
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hi!

 =


I'm porting some software from a White Russian OpenWRT system to a new Kami=
kaze 8.09.1 OpenWRT system but I am having some serious issues that I'm hop=
ing you can help me with.

 =


Old system

Linux kernel 2.4.34

MIPSEL arch

Perl 5.8.7

Net::DNS 0.48

IO 1.21

IO::Socket 1.28

IO::Socket::INET 1.28

 =


New system

Linux kernel 2.6.26.8

MIPS arch

Perl 5.10.0

Net::DNS 0.66

IO 1.23_01

IO::Socket 1.30_01

IO::Socket::INET 1.31

 =


First, let me provide some background information...

 

I am trying to resolve my server (clearprobe.winbeam.com) from within my Pe=
rl program and see the following if I enable debugging in Net::DNS:

 =


resolve: Server 'clearprobe-ddns.winbeam.com'

;; query(clearprobe-ddns.winbeam.com)

;; setting up an AF_INET() family type UDP socket

;; send_udp(192.168.88.1:53)

;; send_udp(4.2.2.2:53)

;; send_udp(192.168.88.1:53)

;; send_udp(4.2.2.2:53)

resolve: res->errorstring: query timed out

 =


Both of these servers resolve clearprobe.winbeam.com fine from the command =
line:

 =


root@cwb-2-11:~# echo "nameserver 192.168.88.1" > /etc/resolv.conf

root@cwb-2-11:~# nslookup clearprobe-ddns.winbeam.com

Server:    192.168.88.1

Address 1: 192.168.88.1 router

 =


Name:      clearprobe-ddns.winbeam.com

Address 1: 64.13.48.40 64-13-48-40.war.clearwire-dns.net

 =


 =


root@cwb-2-11:~# echo "nameserver 4.2.2.2" > /etc/resolv.conf

root@cwb-2-11:~# nslookup clearprobe-ddns.winbeam.com

Server:    4.2.2.2

Address 1: 4.2.2.2 vnsc-bak.sys.gtei.net

 =


Name:      clearprobe-ddns.winbeam.com

Address 1: 64.13.48.40 64-13-48-40.war.clearwire-dns.net

 =


Using Perl's call to the C gethostbyaddr() function works fine, but I need =
to do another lookup later in the software which requires that I specify th=
e nameserver (clearprobe-ddns.winbeam.com is the authority for my internal =
DNS zone), hence my Net::DNS requirement.

 =


Now, here is the IO module-specific information:

 =


What I am seeing is that the reply is coming back from the nameserver (conf=
irmed via tcpdump - I can send the captures if you'd like), but the UDP pac=
kets are sitting in the process's UDP receive queue pending reception by Ne=
t::DNS (the approx 1752 bytes per response stay queued waiting for $sel->ca=
n_read()):

 =


root@cwb-2-11:~# netstat -una

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address           Foreign Address         State

udp     1752      0 0.0.0.0:52680           0.0.0.0:*

 =


root@cwb-2-11:~# netstat -una

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address           Foreign Address         State

udp     5256      0 0.0.0.0:52680           0.0.0.0:*

 =


If I force $sock[AF_INET]->recv($buf, $self->_packetsz) around line 803 of =
/usr/lib/perl5/5.10/Net/DNS/Resolver/Base.pm, instead of waiting for IO::Se=
lect's can_read() function ( @ready =3D $sel->can_read($timeout)) to popula=
te @ready, the response is received and processed.

 =


Any idea what could be causing this issue?

 =


In a possibly related matter, I noticed in another script that the followin=
g code fails in the same manner (network responses stay in the process's TC=
P receive queue) with the new system:

 =


$sock =3D new IO::Socket::INET(

PeerAddr =3D> "$server",

PeerPort =3D> 37,

Proto =3D> 'tcp',

Timeout =3D> 5

);

 =


Whereas the following code works:

 =


$sock =3D new IO::Socket::INET(

PeerAddr =3D> "$server",

PeerPort =3D> 37,

Proto =3D> 'tcp'

);

 =


I have looked through the NET::DNS code and don't see a timeout passed for =
the UDP sockets, so I am not sure if that this is related or not.

 =


Please let me know if I can provide you with any further information in ord=
er to help diagnose this issue.

 =


Thanks!

 =


Richard D Alloway =


N3WWN

clearw=B0re

Network OSS & Tools | Suite 2, 300 S Hamilton St, Greensburg, PA 15601

Office:  724.219.0408 | Fax:  724.853.0361

Email OSS Support <mailto:Email%20OSS%20Support>  at networkosssupport@clea=
rwire.com

Email Bird/ClearProbe requests to oss-birdteam@clearwire.com

 =




This email may contain confidential and privileged material for the sole us=
e of the intended recipient. Any review, use, distribution or disclosure by=
 others is strictly prohibited. If you are not the intended recipient (or a=
uthorized to receive for the recipient), please contact the sender by reply=
 email and delete all copies of this message.


------_=_NextPart_001_01CAD72B.3BF72B9F--
0
Richard
4/8/2010 2:53:17 PM
perl.perl5.porters 48287 articles. 1 followers. Follow

1 Replies
1029 Views

Similar Articles

[PageSpeed] 9

On Thu, Apr 08, 2010 at 07:53:17AM -0700, Richard Alloway wrote:
[snip Net::DNS related stuff ]
> Please let me know if I can provide you with any further information in
> order to help diagnose this issue.

This list is for discussing the development and fixing of the perl core.
You appear to have an issue with a non core perl module (Net::DNS).
Either raise the issue the with the module's authors in whatever way the
the module describes you should reports bugs, or, if you can show that
this is issue is in fact a  bug in perl core itself, then report it
using perlbug.

-- 
A power surge on the Bridge is rapidly and correctly diagnosed as a faulty
capacitor by the highly-trained and competent engineering staff.
    -- Things That Never Happen in "Star Trek" #9
0
davem
4/10/2010 12:21:35 PM
Reply:

Web resources about - IO modules causing issues in Net::DNS module? - perl.perl5.porters

Resources last updated: 12/8/2015 2:24:26 AM