diff --git a/jni/pjproject-android/.svn/pristine/15/151522d3865f76d418ff008a4d14f50abac61acf.svn-base b/jni/pjproject-android/.svn/pristine/15/151522d3865f76d418ff008a4d14f50abac61acf.svn-base
new file mode 100644
index 0000000..ec55405
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/15/151522d3865f76d418ff008a4d14f50abac61acf.svn-base
@@ -0,0 +1,72 @@
+/* $Id$ */
+/* 
+ * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
+ * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
+ */
+#include <pj/list.h>
+#include <pj/assert.h>
+#include <pj/log.h>
+
+/**
+ * \page page_pjlib_samples_list_c Example: List Manipulation
+ *
+ * Below is sample program to demonstrate how to manipulate linked list.
+ *
+ * \includelineno pjlib-samples/list.c
+ */
+
+struct my_node
+{
+    // This must be the first member declared in the struct!
+    PJ_DECL_LIST_MEMBER(struct my_node);
+    int value;
+};
+
+
+int main()
+{
+    struct my_node nodes[10];
+    struct my_node list;
+    struct my_node *it;
+    int i;
+    
+    // Initialize the list as empty.
+    pj_list_init(&list);
+    
+    // Insert nodes.
+    for (i=0; i<10; ++i) {
+        nodes[i].value = i;
+        pj_list_insert_before(&list, &nodes[i]);
+    }
+    
+    // Iterate list nodes.
+    it = list.next;
+    while (it != &list) {
+        PJ_LOG(3,("list", "value = %d", it->value));
+        it = it->next;
+    }
+    
+    // Erase all nodes.
+    for (i=0; i<10; ++i) {
+        pj_list_erase(&nodes[i]);
+    }
+    
+    // List must be empty by now.
+    pj_assert( pj_list_empty(&list) );
+    
+    return 0;
+};
diff --git a/jni/pjproject-android/.svn/pristine/15/1529d575e4b0c570c9f3b1af0dd89a67eb7c7125.svn-base b/jni/pjproject-android/.svn/pristine/15/1529d575e4b0c570c9f3b1af0dd89a67eb7c7125.svn-base
new file mode 100644
index 0000000..cac5c98
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/15/1529d575e4b0c570c9f3b1af0dd89a67eb7c7125.svn-base
@@ -0,0 +1,27 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=pjmedia
+c=IN IP7 127.0.0.1
+t=0 0
+m=audio 4000 RTP/AVP 0 101
+a=rtpmap:0 PCMU/8000
+a=sendrecv
+a=rtpmap:101 telephone-event/8000
+a=fmtp:101 0-15
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = [ "Warning: " ]	# better have Warning header
+exclude = []
+sendto_cfg = sip.SendtoCfg("Bad SDP address type", pjsua_args, sdp, 400, 
+			   extra_headers=extra_headers,
+			   resp_inc=include, resp_exc=exclude) 
+			   
+
diff --git a/jni/pjproject-android/.svn/pristine/15/1571c50b20d85ade4dd17cdba8d284bb65afbe89.svn-base b/jni/pjproject-android/.svn/pristine/15/1571c50b20d85ade4dd17cdba8d284bb65afbe89.svn-base
new file mode 100644
index 0000000..5f708c8
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/15/1571c50b20d85ade4dd17cdba8d284bb65afbe89.svn-base
@@ -0,0 +1,225 @@
+/* $Id$ */
+/* 
+ * Copyright (C) 2003-2007 Benny Prijono <benny@prijono.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
+ */
+#ifndef __SRTP_CONFIG_H__
+#define __SRTP_CONFIG_H__
+
+#include <pj/types.h>
+
+/* We'll just define CISC if it's x86 family */
+#if defined (PJ_M_I386) || defined(_i386_) || defined(i_386_) || \
+    defined(_X86_) || defined(x86) || defined(__i386__) || \
+    defined(__i386) || defined(_M_IX86) || defined(__I86__) || \
+    defined (PJ_M_X86_64) || defined(__amd64__) || defined(__amd64) || \
+    defined(__x86_64__) || defined(__x86_64) || \
+    defined(PJ_M_IA64) || defined(__ia64__) || defined(_IA64) || \
+    defined(__IA64__) || defined(_M_IA64)
+#   define CPU_CISC	    1
+/* #   define HAVE_X86	    1   use X86 inlined assembly code */
+#else
+/*#   define CPU_RISC	    1*/
+#   define CPU_CISC	    1
+#endif
+
+/* Define to compile in dynamic debugging system. */
+#define ENABLE_DEBUGGING    PJ_DEBUG
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#if defined(PJ_HAS_ARPA_INET_H) && PJ_HAS_ARPA_INET_H!=0
+#   define HAVE_ARPA_INET_H 1
+#endif
+
+/* Define to 1 if you have the <byteswap.h> header file. */
+/* #undef HAVE_BYTESWAP_H */
+
+/* Define to 1 if you have the `inet_aton' function. */
+#if defined(PJ_SOCK_HAS_INET_PTON) && PJ_SOCK_HAS_INET_PTON
+#   define HAVE_INET_ATON   1
+#endif
+
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#if defined(PJ_HAS_NETINET_IN_H) && PJ_HAS_NETINET_IN_H!=0
+#   define HAVE_NETINET_IN_H	1
+#endif
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#if defined(PJ_HAS_STDLIB_H) && PJ_HAS_STDLIB_H!=0
+#   define HAVE_STDLIB_H    1
+#endif
+
+/* Define to 1 if you have the <string.h> header file. */
+#if defined(PJ_HAS_STRING_H) && PJ_HAS_STRING_H!=0
+#   define HAVE_STRING_H    1
+#endif
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#if defined(PJ_HAS_SYS_SOCKET_H) && PJ_HAS_SYS_SOCKET_H!=0
+#   define HAVE_SYS_SOCKET_H	1
+#endif
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#if defined(PJ_HAS_SYS_TYPES_H) && PJ_HAS_SYS_TYPES_H!=0
+#   define HAVE_SYS_TYPES_H 1
+#endif
+
+/* Define to 1 if you have the <unistd.h> header file. */
+/* Define to 1 if you have the `usleep' function. */
+#if defined(PJ_HAS_UNISTD_H) && PJ_HAS_UNISTD_H!=0
+#   define HAVE_UNISTD_H    1
+#   define HAVE_USLEEP	    1
+#endif
+
+
+/* Define to 1 if you have the <windows.h> header file. */
+#if (defined(PJ_WIN32) && PJ_WIN32!=0) || (defined(PJ_WIN64) && PJ_WIN64 != 0)
+#   define HAVE_WINDOWS_H   1
+#endif
+
+/* Define to 1 if you have the <winsock2.h> header file. */
+#if defined(PJ_HAS_WINSOCK2_H) && PJ_HAS_WINSOCK2_H!=0
+#   define HAVE_WINSOCK2_H  1
+#endif
+
+#define HAVE_INT16_T	    1
+#define HAVE_INT32_T	    1
+#define HAVE_INT8_T	    1
+#define HAVE_UINT8_T	    1
+#define HAVE_UINT16_T	    1
+#define HAVE_UINT32_T	    1
+#define HAVE_UINT64_T	    1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#if defined(PJ_HAS_STDINT_H) && PJ_HAS_STDINT_H!=0
+#   define HAVE_STDINT_H    1
+#else
+    typedef pj_uint8_t	    uint8_t;
+    typedef pj_uint16_t	    uint16_t;
+    typedef pj_uint32_t	    uint32_t;
+    typedef pj_uint64_t	    uint64_t;
+    typedef pj_int8_t	    int8_t;
+    typedef pj_int16_t	    int16_t;
+    typedef pj_int32_t	    int32_t;
+    typedef pj_int64_t	    int64_t;
+#endif
+
+/* These shouldn't really matter as long as HAVE_UINT64_T is set */
+#define SIZEOF_UNSIGNED_LONG	    (sizeof(unsigned long))
+#define SIZEOF_UNSIGNED_LONG_LONG   8
+
+
+#if (_MSC_VER >= 1400) // VC8+
+#   ifndef _CRT_SECURE_NO_DEPRECATE
+#	define _CRT_SECURE_NO_DEPRECATE
+#   endif
+#   ifndef _CRT_NONSTDC_NO_DEPRECATE
+#	define _CRT_NONSTDC_NO_DEPRECATE
+#   endif
+#endif // VC8+
+
+#ifdef _MSC_VER
+#   ifndef __cplusplus
+#	define inline _inline
+#   endif
+
+#   pragma warning(disable:4311)
+#   pragma warning(disable:4761) // integral mismatch
+#   pragma warning(disable:4018) // signed/unsigned mismatch
+#   pragma warning(disable:4244) // conversion from int64 to int
+#   pragma warning(disable:4100) // unreferenced formal parameter
+#endif
+
+/* clock()  */
+#if defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE!=0
+    /* clock() causes unresolved symbol on linking */
+#   define _CLOCK_T_DEFINED
+#   define CLOCKS_PER_SEC   1000
+#   define clock_t	    unsigned
+
+    #include <windows.h>
+    static clock_t clock(void)
+    {
+	return GetTickCount();
+    }
+#endif
+
+
+/* Path to random device */
+/* #define DEV_URANDOM "/dev/urandom" */
+
+/* Only with PJSIP:
+ * Try to open PJ_DEV_URANDOM if present
+ */
+#if defined(PJ_HAS_FCNTL_H) && defined(PJ_HAS_UNISTD_H)
+#   define PJ_DEV_URANDOM	"/dev/urandom"
+#endif
+
+/* We have overridden libsrtp error mechanism, so these are not used. */
+/* #undef ERR_REPORTING_FILE */
+/* #undef ERR_REPORTING_STDOUT */
+/* #undef USE_ERR_REPORTING_FILE */
+/* #undef USE_SYSLOG */
+/* #undef HAVE_SYSLOG_H */
+
+
+/* Define this to use ISMAcryp code. */
+/* #undef GENERIC_AESICM */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+/* #undef HAVE_INTTYPES_H */
+
+/* Define to 1 if you have the `socket' function. */
+/* #undef HAVE_SOCKET */
+
+/* Define to 1 if you have the `socket' library (-lsocket). */
+/* #undef HAVE_LIBSOCKET */
+
+/* Define to 1 if you have the <machine/types.h> header file. */
+/* #undef HAVE_MACHINE_TYPES_H */
+
+
+/* Define to 1 if you have the <strings.h> header file. */
+//#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <sys/int_types.h> header file. */
+/* #undef HAVE_SYS_INT_TYPES_H */
+
+/* Define to use GDOI. */
+/* #undef SRTP_GDOI */
+
+/* Define to compile for kernel contexts. */
+/* #undef SRTP_KERNEL */
+
+/* Define to compile for Linux kernel context. */
+/* #undef SRTP_KERNEL_LINUX */
+
+/* Define to 1 if you have the ANSI C header files. */
+//#define STDC_HEADERS 1
+
+/* Endianness would have been set by pjlib. */
+/* #undef WORDS_BIGENDIAN */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+/* #undef size_t */
+
+
+#endif	/* __SRTP_CONFIG_H__ */
+
diff --git a/jni/pjproject-android/.svn/pristine/15/159e87d790ca3660ffe887080e1d575fb4792356.svn-base b/jni/pjproject-android/.svn/pristine/15/159e87d790ca3660ffe887080e1d575fb4792356.svn-base
new file mode 100644
index 0000000..cdd5cf0
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/15/159e87d790ca3660ffe887080e1d575fb4792356.svn-base
@@ -0,0 +1,55 @@
+/* $Id$ */
+/* 
+ * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
+ * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
+ */
+#ifndef __PJ_COMPAT_CC_CODEW_H__
+#define __PJ_COMPAT_CC_CODEW_H__
+
+/**
+ * @file cc_codew.h
+ * @brief Describes MetroWerks Code Warrior compiler specifics.
+ */
+
+#ifndef __MWERKS__
+#  error "This file is only for Code Warrior!"
+#endif
+
+#define PJ_CC_NAME		"codewarrior"
+#define PJ_CC_VER_1		((__MWERKS__ & 0xF000) >> 12)
+#define PJ_CC_VER_2		((__MWERKS__ & 0x0F00) >> 8)
+#define PJ_CC_VER_3		((__MWERKS__ & 0xFF))
+
+
+#define PJ_INLINE_SPECIFIER	static inline
+#define PJ_THREAD_FUNC	
+#define PJ_NORETURN		
+#define PJ_ATTR_NORETURN	
+
+#define PJ_HAS_INT64		1
+
+typedef long long pj_int64_t;
+typedef unsigned long long pj_uint64_t;
+
+#define PJ_INT64(val)		val##LL
+#define PJ_UINT64(val)		val##LLU
+#define PJ_INT64_FMT		"L"
+
+#define PJ_UNREACHED(x)	    	
+
+#endif	/* __PJ_COMPAT_CC_CODEW_H__ */
+
diff --git a/jni/pjproject-android/.svn/pristine/15/15a28bc02e36a7ca2344aeb3fad6036662c448a5.svn-base b/jni/pjproject-android/.svn/pristine/15/15a28bc02e36a7ca2344aeb3fad6036662c448a5.svn-base
new file mode 100644
index 0000000..4e7465a
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/15/15a28bc02e36a7ca2344aeb3fad6036662c448a5.svn-base
@@ -0,0 +1,22 @@
+# $Id$
+import inc_sip as sip
+import inc_sdp as sdp
+
+sdp = \
+"""
+v=0
+o=- 0 0 IN IP4 127.0.0.1
+s=pjmedia
+c=IN IP4 127.0.0.1
+t=0 0
+"""
+
+pjsua_args = "--null-audio --auto-answer 200"
+extra_headers = ""
+include = []
+exclude = []
+
+sendto_cfg = sip.SendtoCfg("No media in SDP", pjsua_args, sdp, 400,
+			   extra_headers=extra_headers,
+			   resp_inc=include, resp_exc=exclude) 
+
diff --git a/jni/pjproject-android/.svn/pristine/15/15bf8914711b4d42dba6489f5b80a064d22cc9e9.svn-base b/jni/pjproject-android/.svn/pristine/15/15bf8914711b4d42dba6489f5b80a064d22cc9e9.svn-base
new file mode 100644
index 0000000..7a457ad
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/15/15bf8914711b4d42dba6489f5b80a064d22cc9e9.svn-base
@@ -0,0 +1,7 @@
+# $Id$
+#
+import inc_const as const
+
+PJSUA = ["--null-audio --max-calls=1 --auto-answer=200"]
+
+PJSUA_EXPECTS = [[0, const.STATE_CONFIRMED, "v"]]
