Hello,

I tested it, and it works.

About the save() return codes, there are a lot of cases, so I would have
sorted it this way:
- no error,
- error codes in parsing SIP,
- server side errors (like manipulating usrloc),
- and service errors (like too many registers).

Here is a patch by way of example, but I can't say if it's the right way
to do.

Regards,

-- 
Adrien Martin

diff --git a/modules/registrar/save.c b/modules/registrar/save.c
index 63e2d4d..9c0b2cf 100644
--- a/modules/registrar/save.c
+++ b/modules/registrar/save.c
@@ -816,7 +816,42 @@ error:
 
 	if (forced_c) free_contacts(&forced_c);
 
-	return 0;
+  switch (rerrno) {
+    case R_FINE:
+    case R_OOO:
+    case R_RETRANS:
+      return 0;
+    case R_TOO_MANY:
+      return -2; /* Account errors */
+    case R_INV_CSEQ:
+    case R_TO_USER:
+    case R_AOR_PARSE:
+    case R_INV_EXP:
+    case R_INV_Q:
+    case R_PARSE:
+    case R_TO_MISS:
+    case R_CID_MISS:
+    case R_CS_MISS:
+    case R_PARSE_EXP:
+    case R_PARSE_CONT:
+    case R_STAR_EXP:
+    case R_STAR_CONT:
+    case R_UNESCAPE:
+    case R_CONTACT_LEN:
+    case R_CALLID_LEN:
+    case R_PARSE_PATH:
+    case R_PATH_UNSUP:
+      return -3; /* UAC's SIP errors */
+    case R_UL_DEL_R:
+    case R_UL_GET_R:
+    case R_UL_NEW_R:
+    case R_UL_INS_C:
+    case R_UL_INS_R:
+    case R_UL_DEL_C:
+    case R_UL_UPD_C:
+    case R_AOR_LEN:
+      return -4; /* Server side errors */
+  }
 
 return_minus_one:
 	if (forced_c) free_contacts(&forced_c);

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to