[sr-dev] git:master:cfa6831f: uac: reset ongoing registration state if retry interval is exceeded

Daniel-Constantin Mierla miconda at gmail.com
Mon Jul 27 15:06:23 CEST 2015


Module: kamailio
Branch: master
Commit: cfa6831f9a81988dc1844ba3e4e6048c12841606
URL: https://github.com/kamailio/kamailio/commit/cfa6831f9a81988dc1844ba3e4e6048c12841606

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2015-07-27T15:04:30+02:00

uac: reset ongoing registration state if retry interval is exceeded

- cover the case of remote registration process stuck in ongoing state
  for long time
- reported by Andy J Robinson, GH #255

---

Modified: modules/uac/uac_reg.c

---

Diff:  https://github.com/kamailio/kamailio/commit/cfa6831f9a81988dc1844ba3e4e6048c12841606.diff
Patch: https://github.com/kamailio/kamailio/commit/cfa6831f9a81988dc1844ba3e4e6048c12841606.patch

---

diff --git a/modules/uac/uac_reg.c b/modules/uac/uac_reg.c
index 0cff689..7b7d2de 100644
--- a/modules/uac/uac_reg.c
+++ b/modules/uac/uac_reg.c
@@ -928,8 +928,13 @@ int uac_reg_update(reg_uac_t *reg, time_t tn)
 		return -1;
 	if(reg->expires==0)
 		return 1;
-	if(reg->flags&UAC_REG_ONGOING)
-		return 2;
+	if(reg->flags&UAC_REG_ONGOING) {
+		if (reg->timer_expires > tn - reg_retry_interval)
+			return 2;
+		LM_DBG("record marked as ongoing registration (%d) - resetting\n",
+				(int)reg->flags);
+		reg->flags &= ~(UAC_REG_ONLINE|UAC_REG_AUTHSENT);
+	}
 	if(reg->flags&UAC_REG_DISABLED)
 		return 4;
 	if(reg->timer_expires > tn + reg_timer_interval + 3)




More information about the sr-dev mailing list