diff options
author | Mark Spencer <markster@digium.com> | 2005-01-26 00:11:38 +0000 |
---|---|---|
committer | Mark Spencer <markster@digium.com> | 2005-01-26 00:11:38 +0000 |
commit | a9c26705e087b332b2c309f96dd8dbdc9c287899 (patch) | |
tree | 1e5ae9a737f48cdcaabf31b65caea2ec8a0385e6 /channels/chan_sip.c | |
parent | 690bcfada2249730bdb6fa9890ad707c4c8d4e3f (diff) |
Make sure registration is taken care of if DNS fails (bug #3424)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4891 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_sip.c')
-rwxr-xr-x | channels/chan_sip.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 41590e87e..db0652970 100755 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -4204,7 +4204,14 @@ static int transmit_register(struct sip_registry *r, char *cmd, char *auth, char } /* Find address to hostname */ if (create_addr(p,r->hostname)) { + /* we have what we hope is a temporary network error, + * probably DNS. We need to reschedule a registration try */ sip_destroy(p); + if (r->timeout > -1) { + ast_log(LOG_WARNING, "Still have a registration timeout (create_addr() error), %d\n", r->timeout); + ast_sched_del(sched, r->timeout); + } + r->timeout = ast_sched_add(sched, global_reg_timeout*1000, sip_reg_timeout, r); return 0; } |