> >> On Thu, Jan 7, 2010 at 6:27 PM, JR Richardson > <jmr.richard...@gmail.com> > > 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. > >> > > On Thursday 07 January 2010 18:59:24 David Backeberg wrote: > >> > >> * stop using DNS? Problem solved. * put nagios monitoring on your DNS > >> server? * put in a second DNS server, and tune your DNS timeout to a > >> very low value in /etc/resolv.conf (read the man page) before jumping > >> to next server? > >> > >> Or you could use the Perl language feature, which is called 'alarm'. > >> Google around for some code samples. > > On Thu, 7 Jan 2010, Tilghman Lesher wrote: > > > 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. > > If the DNS lookup is being done by Asterisk to resolve the FastAGI server > name. If the DNS lookup is for the (assumed) database server in his script > then the suggestions to use alarm() would do the trick. > > I guess we need clarification from the OP.
I tend to agree with Tilghman on this. 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. Thanks for your input guys. JR _______________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users