updated pjsip stack
There is still a bug on incoming calls when buiding for android
diff --git a/jni/pjproject-android/pjsip/include/pjsip-simple/errno.h b/jni/pjproject-android/pjsip/include/pjsip-simple/errno.h
index 72450aa..62927ca 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-simple/errno.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-simple/errno.h
@@ -1,4 +1,4 @@
-/* $Id: errno.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip-simple/evsub.h b/jni/pjproject-android/pjsip/include/pjsip-simple/evsub.h
index 5184a79..b0159bf 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-simple/evsub.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-simple/evsub.h
@@ -1,4 +1,4 @@
-/* $Id: evsub.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip-simple/evsub_msg.h b/jni/pjproject-android/pjsip/include/pjsip-simple/evsub_msg.h
index 64035e2..b5016e4 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-simple/evsub_msg.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-simple/evsub_msg.h
@@ -1,4 +1,4 @@
-/* $Id: evsub_msg.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip-simple/iscomposing.h b/jni/pjproject-android/pjsip/include/pjsip-simple/iscomposing.h
index 61d5c72..9cd5e97 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-simple/iscomposing.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-simple/iscomposing.h
@@ -1,4 +1,4 @@
-/* $Id: iscomposing.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip-simple/mwi.h b/jni/pjproject-android/pjsip/include/pjsip-simple/mwi.h
index 4f59d40..9887cfe 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-simple/mwi.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-simple/mwi.h
@@ -1,4 +1,4 @@
-/* $Id: mwi.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/include/pjsip-simple/pidf.h b/jni/pjproject-android/pjsip/include/pjsip-simple/pidf.h
index 6e26264..98828da 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-simple/pidf.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-simple/pidf.h
@@ -1,4 +1,4 @@
-/* $Id: pidf.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip-simple/presence.h b/jni/pjproject-android/pjsip/include/pjsip-simple/presence.h
index d266baa..f29489f 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-simple/presence.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-simple/presence.h
@@ -1,4 +1,4 @@
-/* $Id: presence.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip-simple/publish.h b/jni/pjproject-android/pjsip/include/pjsip-simple/publish.h
index 5940ab7..59a5870 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-simple/publish.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-simple/publish.h
@@ -1,4 +1,4 @@
-/* $Id: publish.h 4173 2012-06-20 10:39:05Z ming $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip-simple/rpid.h b/jni/pjproject-android/pjsip/include/pjsip-simple/rpid.h
index 1ee8982..6caf05a 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-simple/rpid.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-simple/rpid.h
@@ -1,4 +1,4 @@
-/* $Id: rpid.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip-simple/types.h b/jni/pjproject-android/pjsip/include/pjsip-simple/types.h
index 74eee03..f8c7f77 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-simple/types.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-simple/types.h
@@ -1,4 +1,4 @@
-/* $Id: types.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip-simple/xpidf.h b/jni/pjproject-android/pjsip/include/pjsip-simple/xpidf.h
index 911a429..bf6fbf2 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-simple/xpidf.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-simple/xpidf.h
@@ -1,4 +1,4 @@
-/* $Id: xpidf.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip-ua/sip_100rel.h b/jni/pjproject-android/pjsip/include/pjsip-ua/sip_100rel.h
index 1b01d24..d44b0f6 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-ua/sip_100rel.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-ua/sip_100rel.h
@@ -1,4 +1,4 @@
-/* $Id: sip_100rel.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip-ua/sip_inv.h b/jni/pjproject-android/pjsip/include/pjsip-ua/sip_inv.h
index 1bb0360..5782cf9 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-ua/sip_inv.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-ua/sip_inv.h
@@ -1,4 +1,4 @@
-/* $Id: sip_inv.h 4562 2013-07-15 04:23:31Z ming $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -172,6 +172,10 @@
      * #pjsip_inv_set_sdp_answer() and the re-INVITE will be answered
      * automatically.
      *
+     * Remarks: Application may need to monitor on_tsx_state_changed()
+     * callback to check whether the re-INVITE is already answered
+     * automatically with 487 due to being cancelled.
+     *
      * @param inv	The invite session.
      * @param offer	Remote offer.
      * @param rdata     The received re-INVITE request.
diff --git a/jni/pjproject-android/pjsip/include/pjsip-ua/sip_regc.h b/jni/pjproject-android/pjsip/include/pjsip-ua/sip_regc.h
index 826d45e..80c7a33 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-ua/sip_regc.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-ua/sip_regc.h
@@ -1,4 +1,4 @@
-/* $Id: sip_regc.h 4173 2012-06-20 10:39:05Z ming $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -84,6 +84,22 @@
 typedef void pjsip_regc_cb(struct pjsip_regc_cbparam *param);
 
 /**
+ * Structure to hold parameters when calling application's callback
+ * specified in #pjsip_regc_set_reg_tsx_cb().
+ * To update contact address, application can set the field contact_cnt
+ * and contact inside the callback.
+ */
+struct pjsip_regc_tsx_cb_param
+{
+    struct pjsip_regc_cbparam   cbparam;
+    int                         contact_cnt;
+    pj_str_t                    contact[PJSIP_REGC_MAX_CONTACT];
+};
+
+/** Type declaration for callback set in #pjsip_regc_set_reg_tsx_cb(). */
+typedef void pjsip_regc_tsx_cb(struct pjsip_regc_tsx_cb_param *param);
+
+/**
  * Client registration information.
  */
 struct pjsip_regc_info
@@ -191,6 +207,21 @@
 				     pj_uint32_t expires);
 
 /**
+ * Set callback to be called when the registration received a final response.
+ * This callback is different with the one specified during creation via
+ * #pjsip_regc_create(). This callback will be called for any final response
+ * (including 401/407/423) and before any subsequent requests are sent.
+ * In case of unregistration, this callback will not be called.
+ *
+ * @param regc	    The client registration structure.
+ * @param tsx_cb    Pointer to callback function to receive registration status.
+ *
+ * @return	    PJ_SUCCESS on success.
+ */
+PJ_DECL(pj_status_t) pjsip_regc_set_reg_tsx_cb(pjsip_regc *regc,
+				               pjsip_regc_tsx_cb *tsx_cb);
+
+/**
  * Set the "sent-by" field of the Via header for outgoing requests.
  *
  * @param regc	    The client registration structure.
diff --git a/jni/pjproject-android/pjsip/include/pjsip-ua/sip_replaces.h b/jni/pjproject-android/pjsip/include/pjsip-ua/sip_replaces.h
index 6293b0f..aff4449 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-ua/sip_replaces.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-ua/sip_replaces.h
@@ -1,4 +1,4 @@
-/* $Id: sip_replaces.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip-ua/sip_timer.h b/jni/pjproject-android/pjsip/include/pjsip-ua/sip_timer.h
index 6ef7931..aac4e68 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-ua/sip_timer.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-ua/sip_timer.h
@@ -1,4 +1,4 @@
-/* $Id: sip_timer.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/include/pjsip-ua/sip_xfer.h b/jni/pjproject-android/pjsip/include/pjsip-ua/sip_xfer.h
index b7b68d9..b8d8126 100644
--- a/jni/pjproject-android/pjsip/include/pjsip-ua/sip_xfer.h
+++ b/jni/pjproject-android/pjsip/include/pjsip-ua/sip_xfer.h
@@ -1,4 +1,4 @@
-/* $Id: sip_xfer.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip.h b/jni/pjproject-android/pjsip/include/pjsip.h
index a2021cd..25f6bd0 100644
--- a/jni/pjproject-android/pjsip/include/pjsip.h
+++ b/jni/pjproject-android/pjsip/include/pjsip.h
@@ -1,4 +1,4 @@
-/* $Id: pjsip.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/print_util.h b/jni/pjproject-android/pjsip/include/pjsip/print_util.h
index e616fa3..6d82aad 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/print_util.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/print_util.h
@@ -1,4 +1,4 @@
-/* $Id: print_util.h 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_auth.h b/jni/pjproject-android/pjsip/include/pjsip/sip_auth.h
index cd59372..ce262ef 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_auth.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_auth.h
@@ -1,4 +1,4 @@
-/* $Id: sip_auth.h 4214 2012-07-25 14:29:28Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_auth_aka.h b/jni/pjproject-android/pjsip/include/pjsip/sip_auth_aka.h
index 0665bf2..291e2b0 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_auth_aka.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_auth_aka.h
@@ -1,4 +1,4 @@
-/* $Id: sip_auth_aka.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_auth_msg.h b/jni/pjproject-android/pjsip/include/pjsip/sip_auth_msg.h
index ee6da24..56dec78 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_auth_msg.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_auth_msg.h
@@ -1,4 +1,4 @@
-/* $Id: sip_auth_msg.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_auth_parser.h b/jni/pjproject-android/pjsip/include/pjsip/sip_auth_parser.h
index 703c52f..9685fcd 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_auth_parser.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_auth_parser.h
@@ -1,4 +1,4 @@
-/* $Id: sip_auth_parser.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_autoconf.h.in b/jni/pjproject-android/pjsip/include/pjsip/sip_autoconf.h.in
index 6cae772..38eda08 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_autoconf.h.in
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_autoconf.h.in
@@ -1,4 +1,4 @@
-/* $Id: sip_autoconf.h.in 3295 2010-08-25 12:51:29Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_config.h b/jni/pjproject-android/pjsip/include/pjsip/sip_config.h
index 11b82cb..ed93e92 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_config.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_config.h
@@ -1,4 +1,4 @@
-/* $Id: sip_config.h 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_dialog.h b/jni/pjproject-android/pjsip/include/pjsip/sip_dialog.h
index 63e12ac..9f37c32 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_dialog.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_dialog.h
@@ -1,4 +1,4 @@
-/* $Id: sip_dialog.h 4173 2012-06-20 10:39:05Z ming $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_endpoint.h b/jni/pjproject-android/pjsip/include/pjsip/sip_endpoint.h
index 63c65d7..265b7f2 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_endpoint.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_endpoint.h
@@ -1,4 +1,4 @@
-/* $Id: sip_endpoint.h 4275 2012-10-04 06:11:58Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_errno.h b/jni/pjproject-android/pjsip/include/pjsip/sip_errno.h
index 26e326e..afcecc4 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_errno.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_errno.h
@@ -1,4 +1,4 @@
-/* $Id: sip_errno.h 3553 2011-05-05 06:14:19Z nanang $  */
+/* $Id$  */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_event.h b/jni/pjproject-android/pjsip/include/pjsip/sip_event.h
index d6c90af..4e002bc 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_event.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_event.h
@@ -1,4 +1,4 @@
-/* $Id: sip_event.h 4154 2012-06-05 10:41:17Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_module.h b/jni/pjproject-android/pjsip/include/pjsip/sip_module.h
index 45884cc..cc44fef 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_module.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_module.h
@@ -1,4 +1,4 @@
-/* $Id: sip_module.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_msg.h b/jni/pjproject-android/pjsip/include/pjsip/sip_msg.h
index 9031fa2..40fae8b 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_msg.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_msg.h
@@ -1,4 +1,4 @@
-/* $Id: sip_msg.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_multipart.h b/jni/pjproject-android/pjsip/include/pjsip/sip_multipart.h
index be8ae26..d04a1c7 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_multipart.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_multipart.h
@@ -1,4 +1,4 @@
-/* $Id: sip_multipart.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_parser.h b/jni/pjproject-android/pjsip/include/pjsip/sip_parser.h
index 1f6f656..0d767f0 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_parser.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_parser.h
@@ -1,4 +1,4 @@
-/* $Id: sip_parser.h 4445 2013-03-20 11:29:08Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_private.h b/jni/pjproject-android/pjsip/include/pjsip/sip_private.h
index e139fa6..621ca8f 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_private.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_private.h
@@ -1,4 +1,4 @@
-/* $Id: sip_private.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_resolve.h b/jni/pjproject-android/pjsip/include/pjsip/sip_resolve.h
index 6f578a1..5a12cf7 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_resolve.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_resolve.h
@@ -1,4 +1,4 @@
-/* $Id: sip_resolve.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_tel_uri.h b/jni/pjproject-android/pjsip/include/pjsip/sip_tel_uri.h
index f85ec74..15766e8 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_tel_uri.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_tel_uri.h
@@ -1,4 +1,4 @@
-/* $Id: sip_tel_uri.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_transaction.h b/jni/pjproject-android/pjsip/include/pjsip/sip_transaction.h
index 575298a..e60f214 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_transaction.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_transaction.h
@@ -1,4 +1,4 @@
-/* $Id: sip_transaction.h 4420 2013-03-05 11:59:54Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_transport.h b/jni/pjproject-android/pjsip/include/pjsip/sip_transport.h
index 21b2238..4ff3597 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_transport.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_transport.h
@@ -1,4 +1,4 @@
-/* $Id: sip_transport.h 4275 2012-10-04 06:11:58Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_transport_loop.h b/jni/pjproject-android/pjsip/include/pjsip/sip_transport_loop.h
index 1883a02..9bb760b 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_transport_loop.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_transport_loop.h
@@ -1,4 +1,4 @@
-/* $Id: sip_transport_loop.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_transport_tcp.h b/jni/pjproject-android/pjsip/include/pjsip/sip_transport_tcp.h
index e35e814..7e7bc13 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_transport_tcp.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_transport_tcp.h
@@ -1,4 +1,4 @@
-/* $Id: sip_transport_tcp.h 4506 2013-04-26 06:01:43Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_transport_tls.h b/jni/pjproject-android/pjsip/include/pjsip/sip_transport_tls.h
index 6ed1ce7..00d8fe7 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_transport_tls.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_transport_tls.h
@@ -1,4 +1,4 @@
-/* $Id: sip_transport_tls.h 4506 2013-04-26 06:01:43Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_transport_udp.h b/jni/pjproject-android/pjsip/include/pjsip/sip_transport_udp.h
index f58d1e6..27c643a 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_transport_udp.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_transport_udp.h
@@ -1,4 +1,4 @@
-/* $Id: sip_transport_udp.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_types.h b/jni/pjproject-android/pjsip/include/pjsip/sip_types.h
index 9809983..d212dd2 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_types.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_types.h
@@ -1,4 +1,4 @@
-/* $Id: sip_types.h 4262 2012-09-20 06:00:23Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_ua_layer.h b/jni/pjproject-android/pjsip/include/pjsip/sip_ua_layer.h
index 4c69e45..d1df5b2 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_ua_layer.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_ua_layer.h
@@ -1,4 +1,4 @@
-/* $Id: sip_ua_layer.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_uri.h b/jni/pjproject-android/pjsip/include/pjsip/sip_uri.h
index 398085b..a6925d9 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_uri.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_uri.h
@@ -1,4 +1,4 @@
-/* $Id: sip_uri.h 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip/sip_util.h b/jni/pjproject-android/pjsip/include/pjsip/sip_util.h
index 018ad87..226dccd 100644
--- a/jni/pjproject-android/pjsip/include/pjsip/sip_util.h
+++ b/jni/pjproject-android/pjsip/include/pjsip/sip_util.h
@@ -1,4 +1,4 @@
-/* $Id: sip_util.h 4347 2013-02-13 10:19:25Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip_auth.h b/jni/pjproject-android/pjsip/include/pjsip_auth.h
index 3ab2c5e..7adf26b 100644
--- a/jni/pjproject-android/pjsip/include/pjsip_auth.h
+++ b/jni/pjproject-android/pjsip/include/pjsip_auth.h
@@ -1,4 +1,4 @@
-/* $Id: pjsip_auth.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip_simple.h b/jni/pjproject-android/pjsip/include/pjsip_simple.h
index af5acda..b60ce4c 100644
--- a/jni/pjproject-android/pjsip/include/pjsip_simple.h
+++ b/jni/pjproject-android/pjsip/include/pjsip_simple.h
@@ -1,4 +1,4 @@
-/* $Id: pjsip_simple.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsip_ua.h b/jni/pjproject-android/pjsip/include/pjsip_ua.h
index 59d5358..2f5da2e 100644
--- a/jni/pjproject-android/pjsip/include/pjsip_ua.h
+++ b/jni/pjproject-android/pjsip/include/pjsip_ua.h
@@ -1,4 +1,4 @@
-/* $Id: pjsip_ua.h 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/include/pjsua-lib/pjsua.h b/jni/pjproject-android/pjsip/include/pjsua-lib/pjsua.h
index 0707493..be5b08e 100644
--- a/jni/pjproject-android/pjsip/include/pjsua-lib/pjsua.h
+++ b/jni/pjproject-android/pjsip/include/pjsua-lib/pjsua.h
@@ -1,4 +1,4 @@
-/* $Id: pjsua.h 4555 2013-07-10 04:27:05Z ming $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -569,6 +569,39 @@
 
 
 /**
+ * This enumeration specifies the contact rewrite method.
+ */
+typedef enum pjsua_contact_rewrite_method
+{
+    /**
+      * The Contact update will be done by sending unregistration
+      * to the currently registered Contact, while simultaneously sending new
+      * registration (with different Call-ID) for the updated Contact.
+      */
+    PJSUA_CONTACT_REWRITE_UNREGISTER = 1,
+
+    /**
+      * The Contact update will be done in a single, current
+      * registration session, by removing the current binding (by setting its
+      * Contact's expires parameter to zero) and adding a new Contact binding,
+      * all done in a single request.
+      */
+    PJSUA_CONTACT_REWRITE_NO_UNREG = 2,
+
+    /**
+      * The Contact update will be done when receiving any registration final
+      * response. If this flag is not specified, contact update will only be
+      * done upon receiving 2xx response. This flag MUST be used with
+      * PJSUA_CONTACT_REWRITE_UNREGISTER or PJSUA_CONTACT_REWRITE_NO_UNREG
+      * above to specify how the Contact update should be performed when
+      * receiving 2xx response.
+      */
+    PJSUA_CONTACT_REWRITE_ALWAYS_UPDATE = 4
+
+} pjsua_contact_rewrite_method;
+
+
+/**
  * Call settings.
  */
 typedef struct pjsua_call_setting
@@ -2501,16 +2534,6 @@
 
 
 /**
- * This macro specifies the URI scheme to use in Contact header
- * when secure transport such as TLS is used. Application can specify
- * either "sip" or "sips".
- */
-#ifndef PJSUA_SECURE_SCHEME
-#   define PJSUA_SECURE_SCHEME		"sip"
-#endif
-
-
-/**
  * Maximum time to wait for unpublication transaction(s) to complete
  * during shutdown process, before sending unregistration. The library
  * tries to wait for the unpublication (un-PUBLISH) to complete before
@@ -2540,25 +2563,18 @@
 
 /**
  * This macro specifies the default value for \a contact_rewrite_method
- * field in pjsua_acc_config. I specifies  how Contact update will be
+ * field in pjsua_acc_config. It specifies how Contact update will be
  * done with the registration, if \a allow_contact_rewrite is enabled in
- *  the account config.
+ * the account config. See \a pjsua_contact_rewrite_method for the options.
  *
- * If set to 1, the Contact update will be done by sending unregistration
- * to the currently registered Contact, while simultaneously sending new
- * registration (with different Call-ID) for the updated Contact.
+ * Value PJSUA_CONTACT_REWRITE_UNREGISTER(1) is the legacy behavior.
  *
- * If set to 2, the Contact update will be done in a single, current
- * registration session, by removing the current binding (by setting its
- * Contact's expires parameter to zero) and adding a new Contact binding,
- * all done in a single request.
- *
- * Value 1 is the legacy behavior.
- *
- * Default value: 2
+ * Default value: PJSUA_CONTACT_REWRITE_NO_UNREG(2) |
+ *                PJSUA_CONTACT_REWRITE_ALWAYS_UPDATE(4)
  */
 #ifndef PJSUA_CONTACT_REWRITE_METHOD
-#   define PJSUA_CONTACT_REWRITE_METHOD		2
+#   define PJSUA_CONTACT_REWRITE_METHOD	   (PJSUA_CONTACT_REWRITE_NO_UNREG | \
+                                           PJSUA_CONTACT_REWRITE_ALWAYS_UPDATE)
 #endif
 
 
@@ -3010,20 +3026,13 @@
 
     /**
      * Specify how Contact update will be done with the registration, if
-     * \a allow_contact_rewrite is enabled.
+     * \a allow_contact_rewrite is enabled. The value is bitmask combination of
+     * \a pjsua_contact_rewrite_method. See also pjsua_contact_rewrite_method.
      *
-     * If set to 1, the Contact update will be done by sending unregistration
-     * to the currently registered Contact, while simultaneously sending new
-     * registration (with different Call-ID) for the updated Contact.
+     * Value PJSUA_CONTACT_REWRITE_UNREGISTER(1) is the legacy behavior.
      *
-     * If set to 2, the Contact update will be done in a single, current
-     * registration session, by removing the current binding (by setting its
-     * Contact's expires parameter to zero) and adding a new Contact binding,
-     * all done in a single request.
-     *
-     * Value 1 is the legacy behavior.
-     *
-     * Default value: PJSUA_CONTACT_REWRITE_METHOD (2)
+     * Default value: PJSUA_CONTACT_REWRITE_METHOD
+     * (PJSUA_CONTACT_REWRITE_NO_UNREG | PJSUA_CONTACT_REWRITE_ALWAYS_UPDATE)
      */
     int		     contact_rewrite_method;
 
@@ -3589,11 +3598,13 @@
  * data is only valid until the account is destroyed.
  *
  * @param acc_id	The account ID.
+ * @param pool		Pool to duplicate the config.
  * @param acc_cfg	Structure to receive the settings.
  *
  * @return		PJ_SUCCESS on success, or the appropriate error code.
  */
 PJ_DECL(pj_status_t) pjsua_acc_get_config(pjsua_acc_id acc_id,
+                                          pj_pool_t *pool,
                                           pjsua_acc_config *acc_cfg);
 
 
diff --git a/jni/pjproject-android/pjsip/include/pjsua-lib/pjsua_internal.h b/jni/pjproject-android/pjsip/include/pjsua-lib/pjsua_internal.h
index 444f559..dcf5020 100644
--- a/jni/pjproject-android/pjsip/include/pjsua-lib/pjsua_internal.h
+++ b/jni/pjproject-android/pjsip/include/pjsua-lib/pjsua_internal.h
@@ -1,4 +1,4 @@
-/* $Id: pjsua_internal.h 4543 2013-06-24 09:53:16Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -214,6 +214,7 @@
     int		     index;	    /**< Index in accounts array.	*/
     pj_str_t	     display;	    /**< Display name, if any.		*/
     pj_str_t	     user_part;	    /**< User part of local URI.	*/
+    pj_bool_t	     is_sips;	    /**< Local URI uses "sips"?		*/
     pj_str_t	     contact;	    /**< Our Contact header.		*/
     pj_str_t         reg_contact;   /**< Contact header for REGISTER.
 				         It may be different than acc
diff --git a/jni/pjproject-android/pjsip/src/pjsip-simple/errno.c b/jni/pjproject-android/pjsip/src/pjsip-simple/errno.c
index e1bdb95..91a066d 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-simple/errno.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-simple/errno.c
@@ -1,4 +1,4 @@
-/* $Id: errno.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip-simple/evsub.c b/jni/pjproject-android/pjsip/src/pjsip-simple/evsub.c
index 94d12be..aa2498c 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-simple/evsub.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-simple/evsub.c
@@ -1,4 +1,4 @@
-/* $Id: evsub.c 4447 2013-03-21 08:28:21Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -32,6 +32,7 @@
 #include <pj/log.h>
 #include <pj/os.h>
 #include <pj/pool.h>
+#include <pj/rand.h>
 #include <pj/string.h>
 
 
@@ -1749,6 +1750,10 @@
 		unsigned timeout = (sub->expires->ivalue > TIME_UAC_REFRESH) ?
 		    sub->expires->ivalue - TIME_UAC_REFRESH : sub->expires->ivalue;
 
+		/* Reduce timeout by about 1 - 10 secs (randomized) */
+		if (timeout > 10)
+		    timeout += -10 + (pj_rand() % 10);
+
 		PJ_LOG(5,(sub->obj_name, "Will refresh in %d seconds", 
 			  timeout));
 		set_timer(sub, TIMER_TYPE_UAC_REFRESH, timeout);
diff --git a/jni/pjproject-android/pjsip/src/pjsip-simple/evsub_msg.c b/jni/pjproject-android/pjsip/src/pjsip-simple/evsub_msg.c
index fc9f093..b44a715 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-simple/evsub_msg.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-simple/evsub_msg.c
@@ -1,4 +1,4 @@
-/* $Id: evsub_msg.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip-simple/iscomposing.c b/jni/pjproject-android/pjsip/src/pjsip-simple/iscomposing.c
index 7053539..18fd1f5 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-simple/iscomposing.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-simple/iscomposing.c
@@ -1,4 +1,4 @@
-/* $Id: iscomposing.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip-simple/mwi.c b/jni/pjproject-android/pjsip/src/pjsip-simple/mwi.c
index da86131..537ca9e 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-simple/mwi.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-simple/mwi.c
@@ -1,4 +1,4 @@
-/* $Id: mwi.c 4172 2012-06-19 14:35:18Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip-simple/pidf.c b/jni/pjproject-android/pjsip/src/pjsip-simple/pidf.c
index 0b68d1a..b90725d 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-simple/pidf.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-simple/pidf.c
@@ -1,4 +1,4 @@
-/* $Id: pidf.c 3841 2011-10-24 09:28:13Z ming $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip-simple/presence.c b/jni/pjproject-android/pjsip/src/pjsip-simple/presence.c
index 5b96ec7..2e94e93 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-simple/presence.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-simple/presence.c
@@ -1,4 +1,4 @@
-/* $Id: presence.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip-simple/presence_body.c b/jni/pjproject-android/pjsip/src/pjsip-simple/presence_body.c
index e692f47..221228e 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-simple/presence_body.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-simple/presence_body.c
@@ -1,4 +1,4 @@
-/* $Id: presence_body.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip-simple/publishc.c b/jni/pjproject-android/pjsip/src/pjsip-simple/publishc.c
index 0048bc6..fcb412d 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-simple/publishc.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-simple/publishc.c
@@ -1,4 +1,4 @@
-/* $Id: publishc.c 4530 2013-05-30 09:27:49Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip-simple/rpid.c b/jni/pjproject-android/pjsip/src/pjsip-simple/rpid.c
index 8e63205..f02b137 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-simple/rpid.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-simple/rpid.c
@@ -1,4 +1,4 @@
-/* $Id: rpid.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip-simple/xpidf.c b/jni/pjproject-android/pjsip/src/pjsip-simple/xpidf.c
index 22801d7..4ca4b29 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-simple/xpidf.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-simple/xpidf.c
@@ -1,4 +1,4 @@
-/* $Id: xpidf.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip-ua/sip_100rel.c b/jni/pjproject-android/pjsip/src/pjsip-ua/sip_100rel.c
index f64ef19..60b989b 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-ua/sip_100rel.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-ua/sip_100rel.c
@@ -1,4 +1,4 @@
-/* $Id: sip_100rel.c 4208 2012-07-18 07:52:33Z ming $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip-ua/sip_inv.c b/jni/pjproject-android/pjsip/src/pjsip-ua/sip_inv.c
index 270032b..e73049b 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-ua/sip_inv.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-ua/sip_inv.c
@@ -1,4 +1,4 @@
-/* $Id: sip_inv.c 4565 2013-07-17 14:00:26Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -4271,18 +4271,9 @@
     {
 
 	/*
-	 * Handle strandled incoming CANCEL.
+	 * Handle strandled incoming CANCEL or CANCEL for re-INVITE
 	 */
-	pjsip_rx_data *rdata = e->body.tsx_state.src.rdata;
-	pjsip_tx_data *tdata;
-	pj_status_t status;
-
-	status = pjsip_dlg_create_response(dlg, rdata, 200, NULL, &tdata);
-	if (status != PJ_SUCCESS) return;
-
-	status = pjsip_dlg_send_response(dlg, tsx, tdata);
-	if (status != PJ_SUCCESS) return;
-
+        inv_respond_incoming_cancel(inv, tsx, e);
     }
     else if (tsx->method.id == PJSIP_INVITE_METHOD &&
 	     tsx->role == PJSIP_ROLE_UAS)
diff --git a/jni/pjproject-android/pjsip/src/pjsip-ua/sip_reg.c b/jni/pjproject-android/pjsip/src/pjsip-ua/sip_reg.c
index 02d7e23..ca907ba 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-ua/sip_reg.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-ua/sip_reg.c
@@ -1,4 +1,4 @@
-/* $Id: sip_reg.c 4548 2013-06-28 09:25:17Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -75,6 +75,7 @@
 
     void			*token;
     pjsip_regc_cb		*cb;
+    pjsip_regc_tsx_cb           *tsx_cb;
 
     pj_str_t			 str_srv_url;
     pjsip_uri			*srv_url;
@@ -727,6 +728,26 @@
     return PJ_SUCCESS;
 }
 
+static void cbparam_init( struct pjsip_regc_cbparam *cbparam,
+                          pjsip_regc *regc, 
+                          pj_status_t status, int st_code, 
+			  const pj_str_t *reason,
+			  pjsip_rx_data *rdata, pj_int32_t expiration,
+			  int contact_cnt, pjsip_contact_hdr *contact[])
+{
+    cbparam->regc = regc;
+    cbparam->token = regc->token;
+    cbparam->status = status;
+    cbparam->code = st_code;
+    cbparam->reason = *reason;
+    cbparam->rdata = rdata;
+    cbparam->contact_cnt = contact_cnt;
+    cbparam->expiration = expiration;
+    if (contact_cnt) {
+	pj_memcpy( cbparam->contact, contact, 
+		   contact_cnt*sizeof(pjsip_contact_hdr*));
+    }
+}
 
 static void call_callback(pjsip_regc *regc, pj_status_t status, int st_code, 
 			  const pj_str_t *reason,
@@ -735,23 +756,11 @@
 {
     struct pjsip_regc_cbparam cbparam;
 
-
     if (!regc->cb)
 	return;
 
-    cbparam.regc = regc;
-    cbparam.token = regc->token;
-    cbparam.status = status;
-    cbparam.code = st_code;
-    cbparam.reason = *reason;
-    cbparam.rdata = rdata;
-    cbparam.contact_cnt = contact_cnt;
-    cbparam.expiration = expiration;
-    if (contact_cnt) {
-	pj_memcpy( cbparam.contact, contact, 
-		   contact_cnt*sizeof(pjsip_contact_hdr*));
-    }
-
+    cbparam_init(&cbparam, regc, status, st_code, reason, rdata, expiration,
+                 contact_cnt, contact);
     (*regc->cb)(&cbparam);
 }
 
@@ -813,6 +822,15 @@
     }
 }
 
+PJ_DEF(pj_status_t) pjsip_regc_set_reg_tsx_cb( pjsip_regc *regc,
+				               pjsip_regc_tsx_cb *tsx_cb)
+{
+    PJ_ASSERT_RETURN(regc, PJ_EINVAL);
+    regc->tsx_cb = tsx_cb;
+    return PJ_SUCCESS;
+}
+
+
 PJ_DEF(pj_status_t) pjsip_regc_set_via_sent_by( pjsip_regc *regc,
 				                pjsip_host_port *via_addr,
                                                 pjsip_transport *via_tp)
@@ -1035,6 +1053,7 @@
     pjsip_regc *regc = (pjsip_regc*) token;
     pjsip_transaction *tsx = event->body.tsx_state.tsx;
     pj_bool_t handled = PJ_TRUE;
+    pj_bool_t update_contact = PJ_FALSE;
 
     pj_atomic_inc(regc->busy_ctr);
     pj_lock_acquire(regc->lock);
@@ -1056,6 +1075,49 @@
 	}
     }
 
+    if (regc->_delete_flag == 0 && regc->tsx_cb &&
+        regc->current_op == REGC_REGISTERING)
+    {
+        struct pjsip_regc_tsx_cb_param param;
+
+        param.contact_cnt = -1;
+        cbparam_init(&param.cbparam, regc, PJ_SUCCESS, tsx->status_code,
+		     &tsx->status_text,
+                     (event->body.tsx_state.type==PJSIP_EVENT_RX_MSG) ? 
+	              event->body.tsx_state.src.rdata : NULL,
+                     -1, 0, NULL);
+
+        /* Call regc tsx callback before handling any response */
+        pj_lock_release(regc->lock);
+        (*regc->tsx_cb)(&param);
+        pj_lock_acquire(regc->lock);
+
+        if (param.contact_cnt >= 0) {
+            /* Since we receive non-2xx response, it means that (some) contact
+             * bindings haven't been established so we can safely remove these
+             * contact headers. This is to avoid removing non-existent contact
+             * bindings later.
+             */
+            if (tsx->status_code/100 != 2) {
+                pjsip_contact_hdr *h;
+
+	        h = regc->contact_hdr_list.next;
+	        while (h != &regc->contact_hdr_list) {
+                    pjsip_contact_hdr *next = h->next;
+
+                    if (h->expires == -1) {
+                        pj_list_erase(h);
+                    }
+                    h = next;
+                }
+	    }
+
+            /* Update contact address */
+            pjsip_regc_update_contact(regc, param.contact_cnt, param.contact);
+            update_contact = PJ_TRUE;
+        }
+    }
+
     /* Handle 401/407 challenge (even when _delete_flag is set) */
     if (tsx->status_code == PJSIP_SC_PROXY_AUTHENTICATION_REQUIRED ||
 	tsx->status_code == PJSIP_SC_UNAUTHORIZED)
@@ -1066,7 +1128,49 @@
 	/* reset current op */
 	regc->current_op = REGC_IDLE;
 
-	status = pjsip_auth_clt_reinit_req( &regc->auth_sess,
+        if (update_contact) {
+            pjsip_msg *msg;
+            pjsip_hdr *hdr, *ins_hdr;
+            pjsip_contact_hdr *chdr;
+
+            /* Delete Contact headers, but we shouldn't delete headers
+             * which are supposed to remove contact bindings since
+             * we cannot reconstruct those headers.
+             */
+            msg = tsx->last_tx->msg;
+            hdr = msg->hdr.next;
+            ins_hdr = &msg->hdr;
+            while (hdr != &msg->hdr) {
+                pjsip_hdr *next = hdr->next;
+
+                if (hdr->type == PJSIP_H_CONTACT) {
+                    chdr = (pjsip_contact_hdr *)hdr;
+                    if (chdr->expires != 0) {
+                        pj_list_erase(hdr);
+                        ins_hdr = next;
+                    }
+                }
+                hdr = next;
+            }
+
+            /* Add Contact headers. */
+            chdr = regc->contact_hdr_list.next;
+            while (chdr != &regc->contact_hdr_list) {
+	        pj_list_insert_before(ins_hdr, (pjsip_hdr*)
+                    pjsip_hdr_shallow_clone(tsx->last_tx->pool, chdr));
+	        chdr = chdr->next;
+            }
+
+            /* Also add bindings which are to be removed */
+            while (!pj_list_empty(&regc->removed_contact_hdr_list)) {
+	        chdr = regc->removed_contact_hdr_list.next;
+	        pj_list_insert_before(ins_hdr, (pjsip_hdr*)
+                    pjsip_hdr_clone(tsx->last_tx->pool, chdr));
+	        pj_list_erase(chdr);
+            }
+        }
+
+        status = pjsip_auth_clt_reinit_req( &regc->auth_sess,
 					    rdata, 
 					    tsx->last_tx,  
 					    &tdata);
diff --git a/jni/pjproject-android/pjsip/src/pjsip-ua/sip_replaces.c b/jni/pjproject-android/pjsip/src/pjsip-ua/sip_replaces.c
index 121b2bd..b117dd3 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-ua/sip_replaces.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-ua/sip_replaces.c
@@ -1,4 +1,4 @@
-/* $Id: sip_replaces.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip-ua/sip_timer.c b/jni/pjproject-android/pjsip/src/pjsip-ua/sip_timer.c
index 5381dbc..06bfaf0 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-ua/sip_timer.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-ua/sip_timer.c
@@ -1,4 +1,4 @@
-/* $Id: sip_timer.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/src/pjsip-ua/sip_xfer.c b/jni/pjproject-android/pjsip/src/pjsip-ua/sip_xfer.c
index cfa3e10..571b807 100644
--- a/jni/pjproject-android/pjsip/src/pjsip-ua/sip_xfer.c
+++ b/jni/pjproject-android/pjsip/src/pjsip-ua/sip_xfer.c
@@ -1,4 +1,4 @@
-/* $Id: sip_xfer.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_auth_aka.c b/jni/pjproject-android/pjsip/src/pjsip/sip_auth_aka.c
index b3c2dde..82efbaf 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_auth_aka.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_auth_aka.c
@@ -1,4 +1,4 @@
-/* $Id: sip_auth_aka.c 3999 2012-03-30 07:10:13Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_auth_client.c b/jni/pjproject-android/pjsip/src/pjsip/sip_auth_client.c
index 0c723a5..b337e1e 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_auth_client.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_auth_client.c
@@ -1,4 +1,4 @@
-/* $Id: sip_auth_client.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_auth_msg.c b/jni/pjproject-android/pjsip/src/pjsip/sip_auth_msg.c
index b13318d..0f37fae 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_auth_msg.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_auth_msg.c
@@ -1,4 +1,4 @@
-/* $Id: sip_auth_msg.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_auth_parser.c b/jni/pjproject-android/pjsip/src/pjsip/sip_auth_parser.c
index 823372c..4708dc6 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_auth_parser.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_auth_parser.c
@@ -1,4 +1,4 @@
-/* $Id: sip_auth_parser.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_auth_parser_wrap.cpp b/jni/pjproject-android/pjsip/src/pjsip/sip_auth_parser_wrap.cpp
index 8d4f8a3..a0c083f 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_auth_parser_wrap.cpp
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_auth_parser_wrap.cpp
@@ -1,4 +1,4 @@
-/* $Id: sip_auth_parser_wrap.cpp 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_auth_server.c b/jni/pjproject-android/pjsip/src/pjsip/sip_auth_server.c
index c38b40c..514d9d5 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_auth_server.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_auth_server.c
@@ -1,4 +1,4 @@
-/* $Id: sip_auth_server.c 4214 2012-07-25 14:29:28Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_config.c b/jni/pjproject-android/pjsip/src/pjsip/sip_config.c
index d64e7cb..dacc2f8 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_config.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_config.c
@@ -1,4 +1,4 @@
-/* $Id: sip_config.c 4442 2013-03-19 07:39:25Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_dialog.c b/jni/pjproject-android/pjsip/src/pjsip/sip_dialog.c
index 0e70d33..9ddadb0 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_dialog.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_dialog.c
@@ -1,4 +1,4 @@
-/* $Id: sip_dialog.c 4208 2012-07-18 07:52:33Z ming $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_dialog_wrap.cpp b/jni/pjproject-android/pjsip/src/pjsip/sip_dialog_wrap.cpp
index 5bf3935..8c76562 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_dialog_wrap.cpp
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_dialog_wrap.cpp
@@ -1,4 +1,4 @@
-/* $Id: sip_dialog_wrap.cpp 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_endpoint.c b/jni/pjproject-android/pjsip/src/pjsip/sip_endpoint.c
index 71a681a..7a3a3a3 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_endpoint.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_endpoint.c
@@ -1,4 +1,4 @@
-/* $Id: sip_endpoint.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_endpoint_wrap.cpp b/jni/pjproject-android/pjsip/src/pjsip/sip_endpoint_wrap.cpp
index 1386023..0170f6f 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_endpoint_wrap.cpp
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_endpoint_wrap.cpp
@@ -1,4 +1,4 @@
-/* $Id: sip_endpoint_wrap.cpp 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_errno.c b/jni/pjproject-android/pjsip/src/pjsip/sip_errno.c
index 211db39..806733f 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_errno.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_errno.c
@@ -1,4 +1,4 @@
-/* $Id: sip_errno.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_msg.c b/jni/pjproject-android/pjsip/src/pjsip/sip_msg.c
index 52c9010..0ec56ad 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_msg.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_msg.c
@@ -1,4 +1,4 @@
-/* $Id: sip_msg.c 4550 2013-07-02 11:45:57Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_multipart.c b/jni/pjproject-android/pjsip/src/pjsip/sip_multipart.c
index 8eb058e..5d0e566 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_multipart.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_multipart.c
@@ -1,4 +1,4 @@
-/* $Id: sip_multipart.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_parser.c b/jni/pjproject-android/pjsip/src/pjsip/sip_parser.c
index 2709a80..33db355 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_parser.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_parser.c
@@ -1,4 +1,4 @@
-/* $Id: sip_parser.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_parser_wrap.cpp b/jni/pjproject-android/pjsip/src/pjsip/sip_parser_wrap.cpp
index 21f9718..e74d27c 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_parser_wrap.cpp
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_parser_wrap.cpp
@@ -1,4 +1,4 @@
-/* $Id: sip_parser_wrap.cpp 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_resolve.c b/jni/pjproject-android/pjsip/src/pjsip/sip_resolve.c
index f5efc1e..fb23b53 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_resolve.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_resolve.c
@@ -1,4 +1,4 @@
-/* $Id: sip_resolve.c 4108 2012-04-27 01:32:12Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_tel_uri.c b/jni/pjproject-android/pjsip/src/pjsip/sip_tel_uri.c
index 57c8e3b..466a699 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_tel_uri.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_tel_uri.c
@@ -1,4 +1,4 @@
-/* $Id: sip_tel_uri.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_tel_uri_wrap.cpp b/jni/pjproject-android/pjsip/src/pjsip/sip_tel_uri_wrap.cpp
index d13fb52..fc00ccf 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_tel_uri_wrap.cpp
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_tel_uri_wrap.cpp
@@ -1,4 +1,4 @@
-/* $Id: sip_tel_uri_wrap.cpp 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_transaction.c b/jni/pjproject-android/pjsip/src/pjsip/sip_transaction.c
index 9d62006..446617e 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_transaction.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_transaction.c
@@ -1,4 +1,4 @@
-/* $Id: sip_transaction.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -2224,6 +2224,18 @@
 {
     pj_status_t status;
 
+    if (resched && pj_timer_entry_running(&tsx->retransmit_timer)) {
+	/* We've been asked to reschedule but the timer is already rerunning.
+	 * This can only happen in a race condition where, between removing
+	 * this retransmit timer from the heap and actually scheduling it,
+	 * another thread has got in and rescheduled the timer itself.  In
+	 * this scenario, the transmission has already happened and so we
+	 * should just quit out immediately, without either resending the
+	 * message or restarting the timer.
+	 */
+	return PJ_SUCCESS;
+    }
+
     PJ_ASSERT_RETURN(tsx->last_tx!=NULL, PJ_EBUG);
 
     PJ_LOG(5,(tsx->obj_name, "Retransmiting %s, count=%d, restart?=%d", 
@@ -2332,6 +2344,7 @@
 	 * timeout.
 	 */
 	lock_timer(tsx);
+	tsx_cancel_timer( tsx, &tsx->timeout_timer );
 	tsx_schedule_timer( tsx, &tsx->timeout_timer, &timeout_timer_val,
 	                    TIMEOUT_TIMER);
 	unlock_timer(tsx);
@@ -2677,6 +2690,7 @@
 		}
 
 		lock_timer(tsx);
+		tsx_cancel_timer(tsx, &tsx->timeout_timer);
 		tsx_schedule_timer( tsx, &tsx->timeout_timer,
                                     &timeout, TIMEOUT_TIMER);
 		unlock_timer(tsx);
@@ -2705,6 +2719,7 @@
 	     * non-reliable transports, and zero for reliable transports.
 	     */
 	    lock_timer(tsx);
+	    tsx_cancel_timer(tsx, &tsx->timeout_timer);
 	    if (tsx->method.id == PJSIP_INVITE_METHOD) {
 		/* Start timer H for INVITE */
 		tsx_schedule_timer(tsx, &tsx->timeout_timer,
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_transport.c b/jni/pjproject-android/pjsip/src/pjsip/sip_transport.c
index e47fe21..7caa2e9 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_transport.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_transport.c
@@ -1,4 +1,4 @@
-/* $Id: sip_transport.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_transport_loop.c b/jni/pjproject-android/pjsip/src/pjsip/sip_transport_loop.c
index 498b529..a3347d6 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_transport_loop.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_transport_loop.c
@@ -1,4 +1,4 @@
-/* $Id: sip_transport_loop.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_transport_tcp.c b/jni/pjproject-android/pjsip/src/pjsip/sip_transport_tcp.c
index 3f490a6..2235985 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_transport_tcp.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_transport_tcp.c
@@ -1,4 +1,4 @@
-/* $Id: sip_transport_tcp.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_transport_tls.c b/jni/pjproject-android/pjsip/src/pjsip/sip_transport_tls.c
index 2aa9271..dc83ab8 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_transport_tls.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_transport_tls.c
@@ -1,4 +1,4 @@
-/* $Id: sip_transport_tls.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_transport_udp.c b/jni/pjproject-android/pjsip/src/pjsip/sip_transport_udp.c
index 369c0b9..bdd0416 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_transport_udp.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_transport_udp.c
@@ -1,4 +1,4 @@
-/* $Id: sip_transport_udp.c 4559 2013-07-12 05:01:38Z ming $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_transport_wrap.cpp b/jni/pjproject-android/pjsip/src/pjsip/sip_transport_wrap.cpp
index 80d1e88..3faad08 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_transport_wrap.cpp
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_transport_wrap.cpp
@@ -1,4 +1,4 @@
-/* $Id: sip_transport_wrap.cpp 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_ua_layer.c b/jni/pjproject-android/pjsip/src/pjsip/sip_ua_layer.c
index a2ad986..021005a 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_ua_layer.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_ua_layer.c
@@ -1,4 +1,4 @@
-/* $Id: sip_ua_layer.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_uri.c b/jni/pjproject-android/pjsip/src/pjsip/sip_uri.c
index 7441443..0870186 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_uri.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_uri.c
@@ -1,4 +1,4 @@
-/* $Id: sip_uri.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_util.c b/jni/pjproject-android/pjsip/src/pjsip/sip_util.c
index 5c32ef0..520d873 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_util.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_util.c
@@ -1,4 +1,4 @@
-/* $Id: sip_util.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_util_proxy.c b/jni/pjproject-android/pjsip/src/pjsip/sip_util_proxy.c
index ea5a060..2264acc 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_util_proxy.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_util_proxy.c
@@ -1,4 +1,4 @@
-/* $Id: sip_util_proxy.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_util_proxy_wrap.cpp b/jni/pjproject-android/pjsip/src/pjsip/sip_util_proxy_wrap.cpp
index e77786f..3cbd3bd 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_util_proxy_wrap.cpp
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_util_proxy_wrap.cpp
@@ -1,4 +1,4 @@
-/* $Id: sip_util_proxy_wrap.cpp 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_util_statefull.c b/jni/pjproject-android/pjsip/src/pjsip/sip_util_statefull.c
index 3212cab..9036a02 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_util_statefull.c
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_util_statefull.c
@@ -1,4 +1,4 @@
-/* $Id: sip_util_statefull.c 4169 2012-06-18 09:19:58Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsip/sip_util_wrap.cpp b/jni/pjproject-android/pjsip/src/pjsip/sip_util_wrap.cpp
index 140e907..a6878a0 100644
--- a/jni/pjproject-android/pjsip/src/pjsip/sip_util_wrap.cpp
+++ b/jni/pjproject-android/pjsip/src/pjsip/sip_util_wrap.cpp
@@ -1,4 +1,4 @@
-/* $Id: sip_util_wrap.cpp 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_acc.c b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_acc.c
index 4fb3f8a..77d9a12 100644
--- a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_acc.c
+++ b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_acc.c
@@ -1,4 +1,4 @@
-/* $Id: pjsua_acc.c 4546 2013-06-27 10:07:14Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -201,6 +201,7 @@
 	acc->srv_domain = sip_uri->host;
 	acc->srv_port = 0;
     }
+    acc->is_sips = PJSIP_URI_SCHEME_IS_SIPS(name_addr);
 
 
     /* Parse registrar URI, if any */
@@ -685,14 +686,80 @@
 
 /* Get config */
 PJ_DEF(pj_status_t) pjsua_acc_get_config(pjsua_acc_id acc_id,
+                                         pj_pool_t *pool,
                                          pjsua_acc_config *acc_cfg)
 {
     PJ_ASSERT_RETURN(acc_id>=0 && acc_id<(int)PJ_ARRAY_SIZE(pjsua_var.acc)
                      && pjsua_var.acc[acc_id].valid, PJ_EINVAL);
-    pj_memcpy(acc_cfg, &pjsua_var.acc[acc_id].cfg, sizeof(*acc_cfg));
+    //this now would not work due to corrupt header list
+    //pj_memcpy(acc_cfg, &pjsua_var.acc[acc_id].cfg, sizeof(*acc_cfg));
+    pjsua_acc_config_dup(pool, acc_cfg, &pjsua_var.acc[acc_id].cfg);
     return PJ_SUCCESS;
 }
 
+/* Compare two SIP headers. Return zero if equal */
+static int pjsip_hdr_cmp(const pjsip_hdr *h1, const pjsip_hdr *h2)
+{
+    char buf1[PJSIP_MAX_URL_SIZE];
+    char buf2[PJSIP_MAX_URL_SIZE];
+    pj_str_t p1, p2;
+
+    p1.ptr = buf1;
+    p1.slen = 0;
+    p2.ptr = buf2;
+    p2.slen = 0;
+
+    p1.slen = pjsip_hdr_print_on((void*)h1, buf1, sizeof(buf1));
+    if (p1.slen < 0)
+	p1.slen = 0;
+    p2.slen = pjsip_hdr_print_on((void*)h2, buf2, sizeof(buf2));
+    if (p2.slen < 0)
+	p2.slen = 0;
+
+    return pj_strcmp(&p1, &p2);
+}
+
+/* Update SIP header list from another list. Return PJ_TRUE if
+ * the list has been updated */
+static pj_bool_t update_hdr_list(pj_pool_t *pool, pjsip_hdr *dst,
+                                 const pjsip_hdr *src)
+{
+    pjsip_hdr *dst_i;
+    const pjsip_hdr *src_i;
+    pj_bool_t changed = PJ_FALSE;
+
+    /* Remove header that's no longer needed */
+    for (dst_i = dst->next; dst_i != dst; ) {
+	for (src_i = src->next; src_i != src; src_i = src_i->next) {
+	    if (pjsip_hdr_cmp(dst_i, src_i) == 0)
+		break;
+	}
+	if (src_i == src) {
+	    pjsip_hdr *next = dst_i->next;
+	    pj_list_erase(dst_i);
+	    changed = PJ_TRUE;
+	    dst_i = next;
+	} else {
+	    dst_i = dst_i->next;
+	}
+    }
+
+    /* Add new header */
+    for (src_i = src->next; src_i != src; src_i = src_i->next) {
+	for (dst_i = dst->next; dst_i != dst; dst_i = dst_i->next) {
+	    if (pjsip_hdr_cmp(dst_i, src_i) == 0)
+		break;
+	}
+	if (dst_i == dst) {
+	    dst_i = pjsip_hdr_clone(pool, src_i);
+	    pj_list_push_back(dst, dst_i);
+	    changed = PJ_TRUE;
+	}
+    }
+
+    return changed;
+}
+
 /*
  * Modify account information.
  */
@@ -778,6 +845,15 @@
 	reg_sip_uri = (pjsip_sip_uri*) pjsip_uri_get_uri(reg_uri);
     }
 
+    /* REGISTER header list */
+    if (update_hdr_list(acc->pool, &acc->cfg.reg_hdr_list, &cfg->reg_hdr_list)) {
+	update_reg = PJ_TRUE;
+	unreg_first = PJ_TRUE;
+    }
+
+    /* SUBSCRIBE header list */
+    update_hdr_list(acc->pool, &acc->cfg.sub_hdr_list, &cfg->sub_hdr_list);
+
     /* Global outbound proxy */
     global_route_crc = calc_proxy_crc(pjsua_var.ua_cfg.outbound_proxy, 
 				      pjsua_var.ua_cfg.outbound_proxy_cnt);
@@ -836,6 +912,7 @@
 	pj_strdup_with_null(acc->pool, &acc->user_part, &id_sip_uri->user);
 	pj_strdup_with_null(acc->pool, &acc->srv_domain, &id_sip_uri->host);
 	acc->srv_port = 0;
+	acc->is_sips = PJSIP_URI_SCHEME_IS_SIPS(id_name_addr);
 	update_reg = PJ_TRUE;
 	unreg_first = PJ_TRUE;
     }
@@ -1048,6 +1125,7 @@
     /* Credential info */
     {
 	unsigned i;
+	pj_bool_t cred_changed = PJ_FALSE;
 
 	/* Selective update credential info. */
 	for (i = 0; i < cfg->cred_count; ++i) {
@@ -1071,6 +1149,8 @@
 
 	    /* Not found, insert this */
 	    if (j == acc->cfg.cred_count) {
+		cred_changed = PJ_TRUE;
+
 		/* If account credential is full, discard the last one. */
 		if (acc->cfg.cred_count == PJ_ARRAY_SIZE(acc->cfg.cred_info)) {
     		    pj_array_erase(acc->cfg.cred_info, sizeof(pjsip_cred_info),
@@ -1097,8 +1177,10 @@
 	    acc->cred[acc->cred_cnt++] = pjsua_var.ua_cfg.cred_info[i];
 	}
 
-	update_reg = PJ_TRUE;
-	unreg_first = PJ_TRUE;
+	if (cred_changed) {
+	    update_reg = PJ_TRUE;
+	    unreg_first = PJ_TRUE;
+	}
     }
 
     /* Authentication preference */
@@ -1414,6 +1496,7 @@
 
 /* Update NAT address from the REGISTER response */
 static pj_bool_t acc_check_nat_addr(pjsua_acc *acc,
+                                    int contact_rewrite_method,
 				    struct pjsip_regc_cbparam *param)
 {
     pjsip_transport *tp;
@@ -1598,12 +1681,13 @@
 			 (int)via_addr->slen,
 			 via_addr->ptr,
 			 rport,
-			 acc->cfg.contact_rewrite_method));
+			 contact_rewrite_method));
 
-    pj_assert(acc->cfg.contact_rewrite_method == 1 ||
-	      acc->cfg.contact_rewrite_method == 2);
+    pj_assert(contact_rewrite_method == PJSUA_CONTACT_REWRITE_UNREGISTER ||
+	      contact_rewrite_method == PJSUA_CONTACT_REWRITE_NO_UNREG ||
+              contact_rewrite_method == PJSUA_CONTACT_REWRITE_ALWAYS_UPDATE);
 
-    if (acc->cfg.contact_rewrite_method == 1) {
+    if (contact_rewrite_method == PJSUA_CONTACT_REWRITE_UNREGISTER) {
 	/* Unregister current contact */
 	pjsua_acc_set_registration(acc->index, PJ_FALSE);
 	if (acc->regc != NULL) {
@@ -1622,6 +1706,10 @@
 	const char *beginquote, *endquote;
 	char transport_param[32];
 	int len;
+	pj_bool_t secure;
+
+	secure = pjsip_transport_get_flag_from_type(tp->key.type) &
+		 PJSIP_TRANSPORT_SECURE;
 
 	/* Enclose IPv6 address in square brackets */
 	if (tp->key.type & PJSIP_TRANSPORT_IPV6) {
@@ -1645,7 +1733,8 @@
 
 	tmp = (char*) pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE);
 	len = pj_ansi_snprintf(tmp, PJSIP_MAX_URL_SIZE,
-			       "<sip:%.*s%s%s%.*s%s:%d%s%.*s%s>%.*s",
+			       "<%s:%.*s%s%s%.*s%s:%d%s%.*s%s>%.*s",
+			       ((secure && acc->is_sips)? "sips" : "sip"),
 			       (int)acc->user_part.slen,
 			       acc->user_part.ptr,
 			       (acc->user_part.slen? "@" : ""),
@@ -1681,12 +1770,16 @@
 
     }
 
-    if (acc->cfg.contact_rewrite_method == 2 && acc->regc != NULL) {
+    if (contact_rewrite_method == PJSUA_CONTACT_REWRITE_NO_UNREG &&
+        acc->regc != NULL)
+    {
 	pjsip_regc_update_contact(acc->regc, 1, &acc->reg_contact);
     }
 
     /* Perform new registration */
-    pjsua_acc_set_registration(acc->index, PJ_TRUE);
+    if (contact_rewrite_method < PJSUA_CONTACT_REWRITE_ALWAYS_UPDATE) {
+        pjsua_acc_set_registration(acc->index, PJ_TRUE);
+    }
 
     pj_pool_release(pool);
 
@@ -1978,6 +2071,37 @@
 					 "active": "not active")));
 }
 
+static void regc_tsx_cb(struct pjsip_regc_tsx_cb_param *param)
+{
+    pjsua_acc *acc = (pjsua_acc*) param->cbparam.token;
+
+    PJSUA_LOCK();
+
+    if (param->cbparam.regc != acc->regc) {
+        PJSUA_UNLOCK();
+	return;
+    }
+
+    pj_log_push_indent();
+
+    if ((acc->cfg.contact_rewrite_method &
+         PJSUA_CONTACT_REWRITE_ALWAYS_UPDATE) ==
+        PJSUA_CONTACT_REWRITE_ALWAYS_UPDATE &&
+        param->cbparam.code >= 400 &&
+        param->cbparam.rdata)
+    {
+        if (acc_check_nat_addr(acc, PJSUA_CONTACT_REWRITE_ALWAYS_UPDATE,
+                               &param->cbparam))
+        {
+            param->contact_cnt = 1;
+            param->contact[0] = acc->reg_contact;
+        }
+    }
+
+    PJSUA_UNLOCK();
+    pj_log_pop_indent();
+}
+
 /*
  * This callback is called by pjsip_regc when outgoing register
  * request has completed.
@@ -2046,7 +2170,9 @@
 	    update_rfc5626_status(acc, param->rdata);
 
 	    /* Check NAT bound address */
-	    if (acc_check_nat_addr(acc, param)) {
+            if (acc_check_nat_addr(acc, (acc->cfg.contact_rewrite_method & 3),
+                                   param))
+            {
 		PJSUA_UNLOCK();
 		pj_log_pop_indent();
 		return;
@@ -2191,6 +2317,8 @@
 	return status;
     }
 
+    pjsip_regc_set_reg_tsx_cb(acc->regc, regc_tsx_cb);
+
     /* If account is locked to specific transport, then set transport to
      * the client registration.
      */
@@ -2958,7 +3086,7 @@
 				     (int)acc->display.slen,
 				     acc->display.ptr,
 				     (acc->display.slen?"\" " : ""),
-				     (secure ? PJSUA_SECURE_SCHEME : "sip"),
+				     ((secure && acc->is_sips)? "sips" : "sip"),
 				     (int)acc->user_part.slen,
 				     acc->user_part.ptr,
 				     (acc->user_part.slen?"@":""),
@@ -3129,7 +3257,7 @@
 				     (int)acc->display.slen,
 				     acc->display.ptr,
 				     (acc->display.slen?"\" " : ""),
-				     (secure ? PJSUA_SECURE_SCHEME : "sip"),
+				     ((secure && acc->is_sips)? "sips" : "sip"),
 				     (int)acc->user_part.slen,
 				     acc->user_part.ptr,
 				     (acc->user_part.slen?"@":""),
diff --git a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_aud.c b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_aud.c
index 0f768b8..d81ac9a 100644
--- a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_aud.c
+++ b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_aud.c
@@ -1,4 +1,4 @@
-/* $Id: pjsua_aud.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /*
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_call.c b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_call.c
index 8984f8f..1cd91fc 100644
--- a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_call.c
+++ b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_call.c
@@ -1,4 +1,4 @@
-/* $Id: pjsua_call.c 4561 2013-07-15 01:29:03Z ming $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_core.c b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_core.c
index a9295aa..d170b66 100644
--- a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_core.c
+++ b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_core.c
@@ -1,4 +1,4 @@
-/* $Id: pjsua_core.c 4555 2013-07-10 04:27:05Z ming $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_dump.c b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_dump.c
index 513fee0..2f8ef73 100644
--- a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_dump.c
+++ b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_dump.c
@@ -1,4 +1,4 @@
-/* $Id: pjsua_dump.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2011-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_im.c b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_im.c
index 5a9cd2f..7ae3188 100644
--- a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_im.c
+++ b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_im.c
@@ -1,4 +1,4 @@
-/* $Id: pjsua_im.c 4561 2013-07-15 01:29:03Z ming $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_media.c b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_media.c
index b23ece9..62b413a 100644
--- a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_media.c
@@ -1,4 +1,4 @@
-/* $Id: pjsua_media.c 4544 2013-06-26 01:02:02Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_pres.c b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_pres.c
index 87d6d68..a9c3107 100644
--- a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_pres.c
+++ b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_pres.c
@@ -1,4 +1,4 @@
-/* $Id: pjsua_pres.c 4564 2013-07-16 06:24:54Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_vid.c b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_vid.c
index 245685a..0096aca 100644
--- a/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_vid.c
+++ b/jni/pjproject-android/pjsip/src/pjsua-lib/pjsua_vid.c
@@ -1,4 +1,4 @@
-/* $Id: pjsua_vid.c 4560 2013-07-12 13:50:52Z ming $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2011-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/src/test/dlg_core_test.c b/jni/pjproject-android/pjsip/src/test/dlg_core_test.c
index ef2f35b..c661d57 100644
--- a/jni/pjproject-android/pjsip/src/test/dlg_core_test.c
+++ b/jni/pjproject-android/pjsip/src/test/dlg_core_test.c
@@ -1,4 +1,4 @@
-/* $Id: dlg_core_test.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/dns_test.c b/jni/pjproject-android/pjsip/src/test/dns_test.c
index 7f6f3b0..986b312 100644
--- a/jni/pjproject-android/pjsip/src/test/dns_test.c
+++ b/jni/pjproject-android/pjsip/src/test/dns_test.c
@@ -1,4 +1,4 @@
-/* $Id: dns_test.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/inv_offer_answer_test.c b/jni/pjproject-android/pjsip/src/test/inv_offer_answer_test.c
index 7fdb11e..2131ae6 100644
--- a/jni/pjproject-android/pjsip/src/test/inv_offer_answer_test.c
+++ b/jni/pjproject-android/pjsip/src/test/inv_offer_answer_test.c
@@ -1,4 +1,4 @@
-/* $Id: inv_offer_answer_test.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/main.c b/jni/pjproject-android/pjsip/src/test/main.c
index 423e8cb..9904bf8 100644
--- a/jni/pjproject-android/pjsip/src/test/main.c
+++ b/jni/pjproject-android/pjsip/src/test/main.c
@@ -1,4 +1,4 @@
-/* $Id: main.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/msg_err_test.c b/jni/pjproject-android/pjsip/src/test/msg_err_test.c
index d3c5636..3150c90 100644
--- a/jni/pjproject-android/pjsip/src/test/msg_err_test.c
+++ b/jni/pjproject-android/pjsip/src/test/msg_err_test.c
@@ -1,4 +1,4 @@
-/* $Id: msg_err_test.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/msg_logger.c b/jni/pjproject-android/pjsip/src/test/msg_logger.c
index aaeda7d..ac058de 100644
--- a/jni/pjproject-android/pjsip/src/test/msg_logger.c
+++ b/jni/pjproject-android/pjsip/src/test/msg_logger.c
@@ -1,4 +1,4 @@
-/* $Id: msg_logger.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/msg_test.c b/jni/pjproject-android/pjsip/src/test/msg_test.c
index 0975af3..bdc2046 100644
--- a/jni/pjproject-android/pjsip/src/test/msg_test.c
+++ b/jni/pjproject-android/pjsip/src/test/msg_test.c
@@ -1,4 +1,4 @@
-/* $Id: msg_test.c 4550 2013-07-02 11:45:57Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -447,7 +447,7 @@
 print_msg:
     var.print_len = var.print_len + entry->len;
     pj_get_timestamp(&t1);
-    if (var.flag && FLAG_PRINT_ONLY)
+    if (var.flag & FLAG_PRINT_ONLY)
 	ref_msg = print_msg;
     len = pjsip_msg_print(ref_msg, msgbuf1, PJSIP_MAX_PKT_LEN);
     if (len < 1) {
diff --git a/jni/pjproject-android/pjsip/src/test/multipart_test.c b/jni/pjproject-android/pjsip/src/test/multipart_test.c
index 30d6126..4f16e68 100644
--- a/jni/pjproject-android/pjsip/src/test/multipart_test.c
+++ b/jni/pjproject-android/pjsip/src/test/multipart_test.c
@@ -1,4 +1,4 @@
-/* $Id: multipart_test.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip/src/test/regc_test.c b/jni/pjproject-android/pjsip/src/test/regc_test.c
index 152caad..17cb399 100644
--- a/jni/pjproject-android/pjsip/src/test/regc_test.c
+++ b/jni/pjproject-android/pjsip/src/test/regc_test.c
@@ -1,4 +1,4 @@
-/* $Id: regc_test.c 4420 2013-03-05 11:59:54Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/test.c b/jni/pjproject-android/pjsip/src/test/test.c
index d10d345..0361e61 100644
--- a/jni/pjproject-android/pjsip/src/test/test.c
+++ b/jni/pjproject-android/pjsip/src/test/test.c
@@ -1,4 +1,4 @@
-/* $Id: test.c 4420 2013-03-05 11:59:54Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/test.h b/jni/pjproject-android/pjsip/src/test/test.h
index 9b70435..690598b 100644
--- a/jni/pjproject-android/pjsip/src/test/test.h
+++ b/jni/pjproject-android/pjsip/src/test/test.h
@@ -1,4 +1,4 @@
-/* $Id: test.h 4420 2013-03-05 11:59:54Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/transport_loop_test.c b/jni/pjproject-android/pjsip/src/test/transport_loop_test.c
index 6c60036..efa2ea1 100644
--- a/jni/pjproject-android/pjsip/src/test/transport_loop_test.c
+++ b/jni/pjproject-android/pjsip/src/test/transport_loop_test.c
@@ -1,4 +1,4 @@
-/* $Id: transport_loop_test.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/transport_tcp_test.c b/jni/pjproject-android/pjsip/src/test/transport_tcp_test.c
index 4bc8c1c..9024ef9 100644
--- a/jni/pjproject-android/pjsip/src/test/transport_tcp_test.c
+++ b/jni/pjproject-android/pjsip/src/test/transport_tcp_test.c
@@ -1,4 +1,4 @@
-/* $Id: transport_tcp_test.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/transport_test.c b/jni/pjproject-android/pjsip/src/test/transport_test.c
index 851d5dd..ab22c5e 100644
--- a/jni/pjproject-android/pjsip/src/test/transport_test.c
+++ b/jni/pjproject-android/pjsip/src/test/transport_test.c
@@ -1,4 +1,4 @@
-/* $Id: transport_test.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/transport_udp_test.c b/jni/pjproject-android/pjsip/src/test/transport_udp_test.c
index 3c92632..bc0831a 100644
--- a/jni/pjproject-android/pjsip/src/test/transport_udp_test.c
+++ b/jni/pjproject-android/pjsip/src/test/transport_udp_test.c
@@ -1,4 +1,4 @@
-/* $Id: transport_udp_test.c 3553 2011-05-05 06:14:19Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/tsx_basic_test.c b/jni/pjproject-android/pjsip/src/test/tsx_basic_test.c
index aaeabce..baae9fd 100644
--- a/jni/pjproject-android/pjsip/src/test/tsx_basic_test.c
+++ b/jni/pjproject-android/pjsip/src/test/tsx_basic_test.c
@@ -1,4 +1,4 @@
-/* $Id: tsx_basic_test.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/tsx_bench.c b/jni/pjproject-android/pjsip/src/test/tsx_bench.c
index 81d543e..2282b6a 100644
--- a/jni/pjproject-android/pjsip/src/test/tsx_bench.c
+++ b/jni/pjproject-android/pjsip/src/test/tsx_bench.c
@@ -1,4 +1,4 @@
-/* $Id: tsx_bench.c 4420 2013-03-05 11:59:54Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/tsx_uac_test.c b/jni/pjproject-android/pjsip/src/test/tsx_uac_test.c
index 6b67d81..d978df8 100644
--- a/jni/pjproject-android/pjsip/src/test/tsx_uac_test.c
+++ b/jni/pjproject-android/pjsip/src/test/tsx_uac_test.c
@@ -1,4 +1,4 @@
-/* $Id: tsx_uac_test.c 4420 2013-03-05 11:59:54Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/tsx_uas_test.c b/jni/pjproject-android/pjsip/src/test/tsx_uas_test.c
index 5d796f4..3c43f53 100644
--- a/jni/pjproject-android/pjsip/src/test/tsx_uas_test.c
+++ b/jni/pjproject-android/pjsip/src/test/tsx_uas_test.c
@@ -1,4 +1,4 @@
-/* $Id: tsx_uas_test.c 4420 2013-03-05 11:59:54Z bennylp $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/txdata_test.c b/jni/pjproject-android/pjsip/src/test/txdata_test.c
index 330e49b..f7f7365 100644
--- a/jni/pjproject-android/pjsip/src/test/txdata_test.c
+++ b/jni/pjproject-android/pjsip/src/test/txdata_test.c
@@ -1,4 +1,4 @@
-/* $Id: txdata_test.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjsip/src/test/uri_test.c b/jni/pjproject-android/pjsip/src/test/uri_test.c
index 32be4bb..c647764 100644
--- a/jni/pjproject-android/pjsip/src/test/uri_test.c
+++ b/jni/pjproject-android/pjsip/src/test/uri_test.c
@@ -1,4 +1,4 @@
-/* $Id: uri_test.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>