diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/gui.h b/jni/pjproject-android/pjsip-apps/src/pjsua/gui.h
index f7ad169..21ab748 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/gui.h
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/gui.h
@@ -1,4 +1,4 @@
-/* $Id: gui.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-apps/src/pjsua/ios/ipjsua.xcodeproj/project.pbxproj b/jni/pjproject-android/pjsip-apps/src/pjsua/ios/ipjsua.xcodeproj/project.pbxproj
index 8d1f9d3..5c0b4c6 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/ios/ipjsua.xcodeproj/project.pbxproj
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/ios/ipjsua.xcodeproj/project.pbxproj
@@ -420,6 +420,7 @@
 				);
 				ONLY_ACTIVE_ARCH = YES;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				VALID_ARCHS = armv7;
 				WRAPPER_EXTENSION = app;
 			};
 			name = Debug;
@@ -454,6 +455,7 @@
 				);
 				ONLY_ACTIVE_ARCH = YES;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				VALID_ARCHS = armv7;
 				WRAPPER_EXTENSION = app;
 			};
 			name = Release;
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/ios/ipjsua/ipjsuaAppDelegate.m b/jni/pjproject-android/pjsip-apps/src/pjsua/ios/ipjsua/ipjsuaAppDelegate.m
index 739d88a..5bcf240 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/ios/ipjsua/ipjsuaAppDelegate.m
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/ios/ipjsua/ipjsuaAppDelegate.m
@@ -151,26 +151,20 @@
 }
 
 - (void)keepAlive {
-    int i, timeout = KEEP_ALIVE_INTERVAL;
+    int i;
     
     if (!pj_thread_is_registered())
     {
 	pj_thread_register("ipjsua", a_thread_desc, &a_thread);
     }
     
+    /* Since iOS requires that the minimum keep alive interval is 600s,
+     * application needs to make sure that the account's registration
+     * timeout is long enough.
+     */
     for (i = 0; i < (int)pjsua_acc_get_count(); ++i) {
         if (pjsua_acc_is_valid(i)) {
-            pjsua_acc_config acc_cfg;
-
-	    pjsua_acc_get_config(i, &acc_cfg);
-            if (!acc_cfg.reg_uri.slen)
-                continue;
-            if (acc_cfg.reg_timeout < timeout) {
-                acc_cfg.reg_timeout = timeout;
-                pjsua_acc_modify(i, &acc_cfg);
-            } else {
-                pjsua_acc_set_registration(i, PJ_TRUE);
-            }
+            pjsua_acc_set_registration(i, PJ_TRUE);
         }
     }
 }
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/main.c b/jni/pjproject-android/pjsip-apps/src/pjsua/main.c
index 424b08a..ef89e6b 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/main.c
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/main.c
@@ -1,4 +1,4 @@
-/* $Id: main.c 4522 2013-05-23 03:48:31Z 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-apps/src/pjsua/pjsua_app.c b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app.c
index 6257543..2521193 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app.c
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app.c
@@ -1,4 +1,4 @@
-/* $Id: pjsua_app.c 4525 2013-05-28 12:03:36Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -1279,6 +1279,7 @@
     pjsua_transport_id transport_id = -1;
     pjsua_transport_config tcp_cfg;
     unsigned i;
+    pj_pool_t *tmp_pool;
     pj_status_t status;
 
     /** Create pjsua **/
@@ -1288,6 +1289,7 @@
 
     /* Create pool for application */
     app_config.pool = pjsua_pool_create("pjsua-app", 1000, 1000);
+    tmp_pool = pjsua_pool_create("tmp-pjsua", 1000, 1000);;
 
     /* Init CLI & its FE settings */
     if (!app_running) {
@@ -1299,8 +1301,10 @@
 
     /** Parse args **/
     status = load_config(app_cfg.argc, app_cfg.argv, &uri_arg);
-    if (status != PJ_SUCCESS)
+    if (status != PJ_SUCCESS) {
+	pj_pool_release(tmp_pool);
 	return status;
+    }
 
     /* Initialize application callbacks */
     app_config.cfg.cb.on_call_state = &on_call_state;
@@ -1339,8 +1343,10 @@
     /* Initialize pjsua */
     status = pjsua_init(&app_config.cfg, &app_config.log_cfg,
 			&app_config.media_cfg);
-    if (status != PJ_SUCCESS)
+    if (status != PJ_SUCCESS) {
+	pj_pool_release(tmp_pool);
 	return status;
+    }
 
     /* Initialize our module to handle otherwise unhandled request */
     status = pjsip_endpt_register_module(pjsua_get_pjsip_endpt(),
@@ -1587,7 +1593,7 @@
 	pjsua_acc_add_local(transport_id, PJ_TRUE, &aid);
 	if (PJMEDIA_HAS_VIDEO) {
 	    pjsua_acc_config acc_cfg;
-	    pjsua_acc_get_config(aid, &acc_cfg);
+	    pjsua_acc_get_config(aid, tmp_pool, &acc_cfg);
 	    app_config_init_video(&acc_cfg);
 	    pjsua_acc_modify(aid, &acc_cfg);
 	}
@@ -1626,7 +1632,7 @@
 	pjsua_acc_add_local(transport_id, PJ_TRUE, &aid);
 	if (PJMEDIA_HAS_VIDEO) {
 	    pjsua_acc_config acc_cfg;
-	    pjsua_acc_get_config(aid, &acc_cfg);
+	    pjsua_acc_get_config(aid, tmp_pool, &acc_cfg);
 	    app_config_init_video(&acc_cfg);
 	    if (app_config.ipv6)
 		acc_cfg.ipv6_media_use = PJSUA_IPV6_ENABLED;
@@ -1660,7 +1666,7 @@
 	pjsua_acc_add_local(transport_id, PJ_TRUE, &aid);
 	if (PJMEDIA_HAS_VIDEO) {
 	    pjsua_acc_config acc_cfg;
-	    pjsua_acc_get_config(aid, &acc_cfg);
+	    pjsua_acc_get_config(aid, tmp_pool, &acc_cfg);
 	    app_config_init_video(&acc_cfg);
 	    pjsua_acc_modify(aid, &acc_cfg);
 	}
@@ -1685,7 +1691,7 @@
 	pjsua_acc_add_local(transport_id, PJ_TRUE, &aid);
 	if (PJMEDIA_HAS_VIDEO) {
 	    pjsua_acc_config acc_cfg;
-	    pjsua_acc_get_config(aid, &acc_cfg);
+	    pjsua_acc_get_config(aid, tmp_pool, &acc_cfg);
 	    app_config_init_video(&acc_cfg);
 	    if (app_config.ipv6)
 		acc_cfg.ipv6_media_use = PJSUA_IPV6_ENABLED;
@@ -1720,7 +1726,7 @@
 	pjsua_acc_add_local(transport_id, PJ_FALSE, &acc_id);
 	if (PJMEDIA_HAS_VIDEO) {
 	    pjsua_acc_config acc_cfg;
-	    pjsua_acc_get_config(acc_id, &acc_cfg);
+	    pjsua_acc_get_config(acc_id, tmp_pool, &acc_cfg);
 	    app_config_init_video(&acc_cfg);
 	    pjsua_acc_modify(acc_id, &acc_cfg);
 	}
@@ -1744,7 +1750,7 @@
 	pjsua_acc_add_local(transport_id, PJ_TRUE, &aid);
 	if (PJMEDIA_HAS_VIDEO) {
 	    pjsua_acc_config acc_cfg;
-	    pjsua_acc_get_config(aid, &acc_cfg);
+	    pjsua_acc_get_config(aid, tmp_pool, &acc_cfg);
 	    app_config_init_video(&acc_cfg);
 	    if (app_config.ipv6)
 		acc_cfg.ipv6_media_use = PJSUA_IPV6_ENABLED;
@@ -1829,9 +1835,11 @@
     call_opt.aud_cnt = app_config.aud_cnt;
     call_opt.vid_cnt = app_config.vid.vid_cnt;
 
+    pj_pool_release(tmp_pool);
     return PJ_SUCCESS;
 
 on_error:
+    pj_pool_release(tmp_pool);
     app_destroy();
     return status;
 }
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app.h b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app.h
index 568fa76..a9c627b 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app.h
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app.h
@@ -1,4 +1,4 @@
-/* $Id: pjsua_app.h 4489 2013-04-23 07:53:25Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_cli.c b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_cli.c
index 9d727a5..4247de0 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_cli.c
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_cli.c
@@ -1,4 +1,4 @@
-/* $Id: pjsua_app_cli.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>
@@ -2108,9 +2108,11 @@
 static pj_status_t cmd_show_account_video()
 {
     pjsua_acc_config acc_cfg;
+    pj_pool_t *pool = pjsua_pool_create("tmp-pjsua", 1000, 1000);
     
-    pjsua_acc_get_config(current_acc, &acc_cfg);
+    pjsua_acc_get_config(current_acc, pool, &acc_cfg);
     app_config_show_video(current_acc, &acc_cfg);
+    pj_pool_release(pool);
     return PJ_SUCCESS;
 }
 
@@ -2118,10 +2120,11 @@
 {
     pjsua_acc_config acc_cfg;
     pj_cli_cmd_id cmd_id = pj_cli_get_cmd_id(cval->cmd);
+    pj_pool_t *pool = pjsua_pool_create("tmp-pjsua", 1000, 1000);
 
     CHECK_PJSUA_RUNNING();
 
-    pjsua_acc_get_config(current_acc, &acc_cfg);
+    pjsua_acc_get_config(current_acc, pool, &acc_cfg);
 
     switch(cmd_id) {
     case CMD_VIDEO_ACC_AUTORX:	
@@ -2148,6 +2151,7 @@
 	break;
     }
     modify_video_account(&acc_cfg);
+    pj_pool_release(pool);
     return PJ_SUCCESS;
 }
 
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_common.c b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_common.c
index e95d765..2f79cae 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_common.c
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_common.c
@@ -1,4 +1,4 @@
-/* $Id: pjsua_app_common.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-apps/src/pjsua/pjsua_app_common.h b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_common.h
index 996ed06..3d2ebc4 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_common.h
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_common.h
@@ -1,4 +1,4 @@
-/* $Id: pjsua_app_common.h 4489 2013-04-23 07:53:25Z riza $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_config.c b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_config.c
index ce06d49..f7450d0 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_config.c
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_config.c
@@ -1,4 +1,4 @@
-/* $Id: pjsua_app_config.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-apps/src/pjsua/pjsua_app_config.h b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_config.h
index 216757f..40a24ed 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_config.h
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_config.h
@@ -1,4 +1,4 @@
-/* $Id: pjsua_app_config.h 4492 2013-04-23 10:59:52Z nanang $ */
+/* $Id$ */
 /*
  * Copyright (C) 2008-2013 Teluu Inc. (http://www.teluu.com)
  *
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_legacy.c b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_legacy.c
index 487236e..30725b5 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_legacy.c
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/pjsua_app_legacy.c
@@ -1,4 +1,4 @@
-/* $Id: pjsua_app_legacy.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>
@@ -312,8 +312,9 @@
     } else if (strcmp(argv[1], "acc")==0) {
 	pjsua_acc_config acc_cfg;
 	pj_bool_t changed = PJ_FALSE;
+	pj_pool_t *tmp_pool = pjsua_pool_create("tmp-pjsua", 1000, 1000);
 
-	pjsua_acc_get_config(current_acc, &acc_cfg);
+	pjsua_acc_get_config(current_acc, tmp_pool, &acc_cfg);
 
 	if (argc == 3 && strcmp(argv[2], "show")==0) {
 	    app_config_show_video(current_acc, &acc_cfg);
@@ -334,6 +335,7 @@
 	    acc_cfg.vid_rend_dev = dev;
 	    changed = PJ_TRUE;
 	} else {
+	    pj_pool_release(tmp_pool);
 	    goto on_error;
 	}
 
@@ -343,6 +345,7 @@
 		PJ_PERROR(1,(THIS_FILE, status, "Error modifying account %d",
 			     current_acc));
 	}
+	pj_pool_release(tmp_pool);
 
     } else if (strcmp(argv[1], "call")==0) {
 	pjsua_call_vid_strm_op_param param;
diff --git a/jni/pjproject-android/pjsip-apps/src/pjsua/wm/main_wm.c b/jni/pjproject-android/pjsip-apps/src/pjsua/wm/main_wm.c
index d9c2139..311ca77 100644
--- a/jni/pjproject-android/pjsip-apps/src/pjsua/wm/main_wm.c
+++ b/jni/pjproject-android/pjsip-apps/src/pjsua/wm/main_wm.c
@@ -1,4 +1,4 @@
-/* $Id: main_wm.c 4492 2013-04-23 10:59:52Z nanang $ */
+/* $Id$ */
 /* 
  * Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
  *
