[Home]

Summary:ASTERISK-03199: SIP stack stops working when externhost is set and DNS resolution fails
Reporter:cherso (cherso)Labels:
Date Opened:2005-01-06 14:24:20.000-0600Date Closed:2008-01-15 15:20:40.000-0600
Priority:MinorRegression?No
Status:Closed/CompleteComponents:Core/General
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) externhost_sip_call.txt
( 1) externhost.patch
( 2) externhost.txt
( 3) externip_sip_call.txt
Description:scenario externhost=xxx.dyndns.org
dyndns.org name server stop working (they are not working good right now)
all the sip stack is unavailable, internal sip calls too cause the dns lookup delay/fail
the ast_sip_ouraddrfor function should 1st try to test the localnet to handle the local sip calls
It should check the externhost and externrefresh just when the local test fails. If the gethostbyname fails (temporary dns downtime) it should still use the latest externhost ip address resolved

Jan  6 21:10:36 NOTICE[19081]: chan_sip.c:654 ast_sip_ouraddrfor: Warning: Re-lookup of 'xxxx.dyndns.org' failed!
so when this warning is printed all the sip system is unable to work properly

****** STEPS TO REPRODUCE ******

set the externhost
just remove dns from /etc/resolv.conf
try to made a sip call
Comments:By: nick (nick) 2005-01-06 14:47:35.000-0600

'latest' is not a date. Please put the date from 'show version' in your reports.

By: nick (nick) 2005-01-06 14:51:16.000-0600

Also, related issues discussed in 3086.

By: Mark Spencer (markster) 2005-01-06 17:36:34.000-0600

According to the code it does not do anything differently if it fails.

By: cherso (cherso) 2005-01-07 04:12:08.000-0600

this is blocking all the sip calls...
it should at least handle the local (localnet) sip calls to sip/capi/zap when the dns fails

By: cherso (cherso) 2005-01-07 07:50:55.000-0600

take a look to the logs please
localnet=192.168.0.0/255.255.255.0
same call to fwd time service
the first using externip=xxx.dyndns.org it's working
the second using externhost=xxx.dyndns.org it's not working

externip setting call is using the right ip address resolved
the externhost it's not

externip
   -- Executing Dial("SIP/1-f42c", "sip/612@fwd.pulver.com|60") in new stack
We're at 82.50.xxx.xxx port 18684
Answering/Requesting with root capability 8

externhost
   -- Executing Dial("SIP/1-e594", "sip/612@fwd.pulver.com|60") in new stack
We're at 129.39.222.183 port 18408

edited on: 01-07-05 07:52

By: Mark Spencer (markster) 2005-01-07 08:49:14.000-0600

That's fine, but it doesn't show me anything about what you're putting in externhost/externip.  So far it looks as though you're putting something different in each line.

By: cherso (cherso) 2005-01-07 12:51:17.000-0600

I'm using the same dyndns domain name.
For the 1st call I set up the externip=mydomain.dyndns.org
for the second call externhost=mydomain.dyndns.org

Something wrong in the function that is using the externhost as you can see in my logs

By: Mark Spencer (markster) 2005-01-07 15:31:05.000-0600

Fixed in CVS head.

By: cherso (cherso) 2005-01-07 18:19:14.000-0600

sorry mark I just updated the chan_sip.c with your patch but it didn't fix the problem
I will add the log of the same sip call to 612@fwd
still no audio and there is a problem with the externhost substitution
I've added some ast_log line to show them and us.
as you can see it uses the local ip address going out and
ast_log(LOG_DEBUG, "Target address %s is not local, substituting externip\n"
as not been executed
why it takes so long? 01:10:32 to 01:11:11 to start sending sip packets to fwd?
an  8 01:10:31 VERBOSE[27862]:     -- Executing Dial("SIP/9-747d", "sip/612@fwd.pulver.com|60") in new stack
Jan  8 01:10:32 DEBUG[27859]: Auto destroying call '50F5C699-C161-40C4-8891-AC22878726C2@192.168.0.202'
Jan  8 01:11:11 DEBUG[27862]: We are in ast_sip_ouraddrfor them: 69.90.155.70, us: 192.168.0.100

edited on: 01-07-05 18:21

By: cherso (cherso) 2005-01-08 18:43:03.000-0600

got it change
memcpy(&externip.sin_addr, hp->h_addr, sizeof(externip));
to
memcpy(&externip.sin_addr, hp->h_addr, sizeof(externip.sin_addr));

my patch is working better. all the local sip calls are working even when the dns fails
externhost is refreshed only when we really need to go out

the delay problem reported yesterday is still there tho

By: Mark Spencer (markster) 2005-01-08 19:11:45.000-0600

Fixed in CVS head re the sizeof() and moving the externexpire code, as for the delay, well, don't have a broken DNS server.  This is as much work around for broken DNS as I feel comfortable with at this time.

By: Russell Bryant (russell) 2005-01-09 08:50:53.000-0600

not in 1.0

By: Digium Subversion (svnbot) 2008-01-15 15:20:40.000-0600

Repository: asterisk
Revision: 4722

U   trunk/channels/chan_sip.c

------------------------------------------------------------------------
r4722 | markster | 2008-01-15 15:20:40 -0600 (Tue, 15 Jan 2008) | 2 lines

Minor externip fixes (bug ASTERISK-3199)

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=4722