[asterisk-users] AGI perl script set timeout within script?

Tilghman Lesher tlesher at digium.com
Fri Jan 8 01:01:01 CST 2010


On Thursday 07 January 2010 21:17:52 JR Richardson wrote:
> On Thu, 7 Jan 2010, Tilghman Lesher wrote:
> > On Thu, Jan 7, 2010 at 6:27 PM, JR Richardson wrote:
> >> problem I'm running into is if the DNS server is not responding, the
> >> script hangs and waits for 30 seconds before returning to the
> >> Asterisk dialplan. ?I would like a timeout of 1 second, then return.
> >
> > Ah, but Perl isn't actually doing the DNS lookup.  If you examine his
> > script, he's merely passing back a name to the Asterisk process, which
> > is then calling inet_aton(), which is the reason why he cannot control
> > it from within the script.  What he'd actually need to do is to start
> > using Net::DNS to do the resolution on that name, first, perhaps even
> > going as far as to connect to the server himself, and relay the channel
> > between the AGI interface and the remote TCP interface.
> >
> > Then, he could use alarm() or the Time::Hires module to ensure his own
> > timeouts override the builtins.  But as it stands now, it's all
> > Asterisk.
>
> I tried the perl script eval, alarm,
> $SIG{ALRM} functions till I was blue in the face from cussing at the
> screen. It does not appear that the perl script is doing the DNS query,
> otherwise the eval alarm would timeout and pass control back to asterisk. 
> Another indication is that '#define MAX_AGI_CONNECT 2000' in res_agi is not
> being invoked because the timeout is around 30 seconds.  Is that 30 second
> timeout built into Asterisk?  Can I put an absolute timeout on an agi
> script from the dialplan prior to calling the agi application?  Maybe I'll
> fork a macro with a timeout, yea, that's it, let start forking, something
> new to cuss at.

No, the timeout is built into glibc.  I don't see any documented method for
altering it, sorry.  The only way to really do it in a way where you can
control the timeouts would be to do it in your Perl script, in the way that I
described above.

-- 
Tilghman Lesher
Digium, Inc. | Senior Software Developer
twitter: Corydon76 | IRC: Corydon76-dig (Freenode)
Check us out at: www.digium.com & www.asterisk.org



More information about the asterisk-users mailing list