From a9c26705e087b332b2c309f96dd8dbdc9c287899 Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Wed, 26 Jan 2005 00:11:38 +0000
Subject: [PATCH] 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
---
 channels/chan_sip.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 41590e87e9..db0652970c 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;
 		}
 
-- 
GitLab