Bläddra i källkod

ims_registrar_pcscf: update registered state to pending registration if contact exists

herlesupreeth 1 år sedan
förälder
incheckning
4fb8accc67
1 ändrade filer med 9 tillägg och 2 borttagningar
  1. 9 2
      src/modules/ims_registrar_pcscf/save.c

+ 9 - 2
src/modules/ims_registrar_pcscf/save.c

@@ -477,8 +477,15 @@ int save_pending(struct sip_msg *_m, udomain_t *_d)
 				ul.unlock_udomain(_d, &ci.via_host, ci.via_port, ci.via_prot);
 				return -2;
 			}
-		} else {
-			LM_DBG("Contact already exists - not doing anything for now\n");
+		} else if(pcontact->reg_state == PCONTACT_DEREG_PENDING_PUBLISH) {
+			LM_DBG("Contact already exists - Updating contact [%.*s]: setting "
+				   "state to PCONTACT_REG_PENDING\n",
+					pcontact->aor.len, pcontact->aor.s);
+
+			memset(&ci_, 0, sizeof(struct pcontact_info));
+			ci_.reg_state = PCONTACT_REG_PENDING;
+			ci_.num_service_routes = 0;
+			ul.update_pcontact(_d, &ci_, pcontact);
 		}
 	}