Index: pjproject/trunk/build.symbian/bld.inf
===================================================================
--- pjproject/trunk/build.symbian/bld.inf	(revision 1416)
+++ pjproject/trunk/build.symbian/bld.inf	(revision 1417)
@@ -2,5 +2,5 @@
 winscw
 //armv5
-gcce
+//gcce
 
 prj_mmpfiles
@@ -14,6 +14,4 @@
 pjsip_simple.mmp
 pjsip_ua.mmp
-pjlib_test.mmp
-sipstateless.mmp
 pjsua_lib.mmp
 null_audio.mmp
Index: pjproject/trunk/build.symbian/makedef.sh
===================================================================
--- pjproject/trunk/build.symbian/makedef.sh	(revision 1416)
+++ pjproject/trunk/build.symbian/makedef.sh	(revision 1417)
@@ -14,13 +14,20 @@
 fi
 
-TARGET=`grep -w TARGET $MMP | awk '{print $2}' | awk -F '.' '{print $1}' | head -1`
+TARGET=`grep -w '^TARGET' $MMP | awk '{print $2}' | awk -F '.' '{print $1}' | head -1`
 DEFFILE="${TARGET}U.def"
-SOURCES=`grep -w SOURCE $MMP | awk '{print $2}' | tr '\\\\' '/'`
-SOURCEPATH=`grep -w SOURCEPATH $MMP | tr '\\\\' '/' | awk '{print $2}'`
-INCPATH=`grep INCLUDE $MMP | awk '{print $2}' | grep pj | tr '\\\\' '/'`
+SOURCES=`grep -w '^SOURCE' $MMP | awk '{print $2}' | tr '\\\\' '/'`
+SOURCEPATH=`grep -w '^SOURCEPATH' $MMP | tr '\\\\' '/' | awk '{print $2}'`
+INCPATH=`grep 'INCLUDE' $MMP | awk '{print $2}' | grep pj | tr '\\\\' '/'`
 INCLUDE=""
 for INC in $INCPATH; do
 	INCLUDE=`echo $INCLUDE -I$INC`
 done
+
+#-- debug --
+#echo TARGET=$TARGET
+#echo SOURCES=$SOURCES
+#echo SOURCEPATH=$SOURCEPATH
+#echo INCLUDE=$INCLUDE
+#-- end --
 
 echo > tmpnames.def
Index: pjproject/trunk/build.symbian/null_audio.mmp
===================================================================
--- pjproject/trunk/build.symbian/null_audio.mmp	(revision 1416)
+++ pjproject/trunk/build.symbian/null_audio.mmp	(revision 1417)
@@ -1,6 +1,23 @@
+#if defined(EKA2)
+
+TARGET		null_audio.dll
+TARGETTYPE	dll
+UID		0x1000008d 0xA0004294
+
+CAPABILITY	None
+LIBRARY		pjlib.lib charconv.lib euser.lib estlib.lib
+MACRO		PJ_DLL
+MACRO		PJ_EXPORTING
+
+DEFFILE		.\null_audio.def
+
+#else
+
 TARGET 		null_audio.lib
 TARGETTYPE 	lib
 UID		0x100039CE 0x10004299
 VENDORID	0x70000001
+
+#endif
 
 SOURCEPATH	..\pjmedia\src\pjmedia
Index: pjproject/trunk/build.symbian/null_audioU.def
===================================================================
--- pjproject/trunk/build.symbian/null_audioU.def	(revision 1417)
+++ pjproject/trunk/build.symbian/null_audioU.def	(revision 1417)
@@ -0,0 +1,12 @@
+EXPORTS
+	pjmedia_snd_deinit                       @ 1 NONAME
+	pjmedia_snd_get_dev_count                @ 2 NONAME
+	pjmedia_snd_get_dev_info                 @ 3 NONAME
+	pjmedia_snd_init                         @ 4 NONAME
+	pjmedia_snd_open                         @ 5 NONAME
+	pjmedia_snd_open_player                  @ 6 NONAME
+	pjmedia_snd_open_rec                     @ 7 NONAME
+	pjmedia_snd_stream_close                 @ 8 NONAME
+	pjmedia_snd_stream_get_info              @ 9 NONAME
+	pjmedia_snd_stream_start                 @ 10 NONAME
+	pjmedia_snd_stream_stop                  @ 11 NONAME
Index: pjproject/trunk/build.symbian/pjlibU.def
===================================================================
--- pjproject/trunk/build.symbian/pjlibU.def	(revision 1416)
+++ pjproject/trunk/build.symbian/pjlibU.def	(revision 1417)
@@ -5,288 +5,292 @@
 	PJ_FD_SET                                @ 4 NONAME
 	PJ_FD_ZERO                               @ 5 NONAME
-	PJ_VERSION                               @ 6 NONAME
-	pj_AF_INET                               @ 7 NONAME
-	pj_AF_INET6                              @ 8 NONAME
-	pj_AF_IRDA                               @ 9 NONAME
-	pj_AF_PACKET                             @ 10 NONAME
-	pj_AF_UNIX                               @ 11 NONAME
-	pj_IPTOS_LOWDELAY                        @ 12 NONAME
-	pj_IPTOS_MINCOST                         @ 13 NONAME
-	pj_IPTOS_RELIABILITY                     @ 14 NONAME
-	pj_IPTOS_THROUGHPUT                      @ 15 NONAME
-	pj_IP_TOS                                @ 16 NONAME
-	pj_MSG_DONTROUTE                         @ 17 NONAME
-	pj_MSG_OOB                               @ 18 NONAME
-	pj_MSG_PEEK                              @ 19 NONAME
-	pj_SOCK_DGRAM                            @ 20 NONAME
-	pj_SOCK_RAW                              @ 21 NONAME
-	pj_SOCK_RDM                              @ 22 NONAME
-	pj_SOCK_STREAM                           @ 23 NONAME
-	pj_SOL_IP                                @ 24 NONAME
-	pj_SOL_IPV6                              @ 25 NONAME
-	pj_SOL_SOCKET                            @ 26 NONAME
-	pj_SOL_TCP                               @ 27 NONAME
-	pj_SOL_UDP                               @ 28 NONAME
-	pj_SO_RCVBUF                             @ 29 NONAME
-	pj_SO_SNDBUF                             @ 30 NONAME
-	pj_SO_TYPE                               @ 31 NONAME
-	pj_ansi_to_unicode                       @ 32 NONAME
-	pj_array_erase                           @ 33 NONAME
-	pj_array_find                            @ 34 NONAME
-	pj_array_insert                          @ 35 NONAME
-	pj_atexit                                @ 36 NONAME
-	pj_atomic_add                            @ 37 NONAME
-	pj_atomic_add_and_get                    @ 38 NONAME
-	pj_atomic_create                         @ 39 NONAME
-	pj_atomic_dec                            @ 40 NONAME
-	pj_atomic_dec_and_get                    @ 41 NONAME
-	pj_atomic_destroy                        @ 42 NONAME
-	pj_atomic_get                            @ 43 NONAME
-	pj_atomic_inc                            @ 44 NONAME
-	pj_atomic_inc_and_get                    @ 45 NONAME
-	pj_atomic_set                            @ 46 NONAME
-	pj_caching_pool_destroy                  @ 47 NONAME
-	pj_caching_pool_init                     @ 48 NONAME
-	pj_create_random_string                  @ 49 NONAME
-	pj_create_unique_string                  @ 50 NONAME
-	pj_dump_config                           @ 51 NONAME
-	pj_elapsed_cycle                         @ 52 NONAME
-	pj_elapsed_msec                          @ 53 NONAME
-	pj_elapsed_nanosec                       @ 54 NONAME
-	pj_elapsed_time                          @ 55 NONAME
-	pj_elapsed_usec                          @ 56 NONAME
-	pj_enter_critical_section                @ 57 NONAME
-	pj_enum_ip_interface                     @ 58 NONAME
-	pj_enum_ip_route                         @ 59 NONAME
-	pj_exception_id_alloc                    @ 60 NONAME
-	pj_exception_id_free                     @ 61 NONAME
-	pj_exception_id_name                     @ 62 NONAME
-	pj_fifobuf_alloc                         @ 63 NONAME
-	pj_fifobuf_free                          @ 64 NONAME
-	pj_fifobuf_init                          @ 65 NONAME
-	pj_fifobuf_max_size                      @ 66 NONAME
-	pj_fifobuf_unalloc                       @ 67 NONAME
-	pj_file_close                            @ 68 NONAME
-	pj_file_delete                           @ 69 NONAME
-	pj_file_exists                           @ 70 NONAME
-	pj_file_flush                            @ 71 NONAME
-	pj_file_getpos                           @ 72 NONAME
-	pj_file_getstat                          @ 73 NONAME
-	pj_file_move                             @ 74 NONAME
-	pj_file_open                             @ 75 NONAME
-	pj_file_read                             @ 76 NONAME
-	pj_file_setpos                           @ 77 NONAME
-	pj_file_size                             @ 78 NONAME
-	pj_file_write                            @ 79 NONAME
-	pj_generate_unique_string                @ 80 NONAME
-	pj_get_netos_error                       @ 81 NONAME
-	pj_get_os_error                          @ 82 NONAME
-	pj_get_timestamp                         @ 83 NONAME
-	pj_get_timestamp_freq                    @ 84 NONAME
-	pj_get_version                           @ 85 NONAME
-	pj_gethostaddr                           @ 86 NONAME
-	pj_gethostbyname                         @ 87 NONAME
-	pj_gethostip                             @ 88 NONAME
-	pj_gethostname                           @ 89 NONAME
-	pj_getpid                                @ 90 NONAME
-	pj_gettimeofday                          @ 91 NONAME
-	pj_hash_calc                             @ 92 NONAME
-	pj_hash_calc_tolower                     @ 93 NONAME
-	pj_hash_count                            @ 94 NONAME
-	pj_hash_create                           @ 95 NONAME
-	pj_hash_first                            @ 96 NONAME
-	pj_hash_get                              @ 97 NONAME
-	pj_hash_next                             @ 98 NONAME
-	pj_hash_set                              @ 99 NONAME
-	pj_hash_set_np                           @ 100 NONAME
-	pj_hash_this                             @ 101 NONAME
-	pj_htonl                                 @ 102 NONAME
-	pj_htons                                 @ 103 NONAME
-	pj_inet_addr                             @ 104 NONAME
-	pj_inet_addr2                            @ 105 NONAME
-	pj_inet_aton                             @ 106 NONAME
-	pj_inet_ntoa                             @ 107 NONAME
-	pj_init                                  @ 108 NONAME
-	pj_ioqueue_accept                        @ 109 NONAME
-	pj_ioqueue_connect                       @ 110 NONAME
-	pj_ioqueue_create                        @ 111 NONAME
-	pj_ioqueue_destroy                       @ 112 NONAME
-	pj_ioqueue_get_user_data                 @ 113 NONAME
-	pj_ioqueue_is_pending                    @ 114 NONAME
-	pj_ioqueue_name                          @ 115 NONAME
-	pj_ioqueue_op_key_init                   @ 116 NONAME
-	pj_ioqueue_poll                          @ 117 NONAME
-	pj_ioqueue_post_completion               @ 118 NONAME
-	pj_ioqueue_recv                          @ 119 NONAME
-	pj_ioqueue_recvfrom                      @ 120 NONAME
-	pj_ioqueue_register_sock                 @ 121 NONAME
-	pj_ioqueue_send                          @ 122 NONAME
-	pj_ioqueue_sendto                        @ 123 NONAME
-	pj_ioqueue_set_lock                      @ 124 NONAME
-	pj_ioqueue_set_user_data                 @ 125 NONAME
-	pj_ioqueue_unregister                    @ 126 NONAME
-	pj_leave_critical_section                @ 127 NONAME
-	pj_list_erase                            @ 128 NONAME
-	pj_list_find_node                        @ 129 NONAME
-	pj_list_insert_after                     @ 130 NONAME
-	pj_list_insert_before                    @ 131 NONAME
-	pj_list_insert_nodes_after               @ 132 NONAME
-	pj_list_insert_nodes_before              @ 133 NONAME
-	pj_list_merge_first                      @ 134 NONAME
-	pj_list_merge_last                       @ 135 NONAME
-	pj_list_search                           @ 136 NONAME
-	pj_list_size                             @ 137 NONAME
-	pj_lock_acquire                          @ 138 NONAME
-	pj_lock_create_null_mutex                @ 139 NONAME
-	pj_lock_create_recursive_mutex           @ 140 NONAME
-	pj_lock_create_semaphore                 @ 141 NONAME
-	pj_lock_create_simple_mutex              @ 142 NONAME
-	pj_lock_destroy                          @ 143 NONAME
-	pj_lock_release                          @ 144 NONAME
-	pj_lock_tryacquire                       @ 145 NONAME
-	pj_log                                   @ 146 NONAME
-	pj_log_1                                 @ 147 NONAME
-	pj_log_2                                 @ 148 NONAME
-	pj_log_3                                 @ 149 NONAME
-	pj_log_4                                 @ 150 NONAME
-	pj_log_5                                 @ 151 NONAME
-	pj_log_get_decor                         @ 152 NONAME
-	pj_log_get_level                         @ 153 NONAME
-	pj_log_get_log_func                      @ 154 NONAME
-	pj_log_set_decor                         @ 155 NONAME
-	pj_log_set_level                         @ 156 NONAME
-	pj_log_set_log_func                      @ 157 NONAME
-	pj_log_write                             @ 158 NONAME
-	pj_mutex_create                          @ 159 NONAME
-	pj_mutex_create_recursive                @ 160 NONAME
-	pj_mutex_create_simple                   @ 161 NONAME
-	pj_mutex_destroy                         @ 162 NONAME
-	pj_mutex_lock                            @ 163 NONAME
-	pj_mutex_trylock                         @ 164 NONAME
-	pj_mutex_unlock                          @ 165 NONAME
-	pj_ntohl                                 @ 166 NONAME
-	pj_ntohs                                 @ 167 NONAME
-	pj_pool_alloc                            @ 168 NONAME
-	pj_pool_alloc_from_block                 @ 169 NONAME
-	pj_pool_allocate_find                    @ 170 NONAME
-	pj_pool_calloc                           @ 171 NONAME
-	pj_pool_create                           @ 172 NONAME
-	pj_pool_create_int                       @ 173 NONAME
-	pj_pool_create_on_buf                    @ 174 NONAME
-	pj_pool_destroy_int                      @ 175 NONAME
-	pj_pool_factory_default_policy           @ 176 NONAME
-	pj_pool_factory_get_default_policy       @ 177 NONAME
-	pj_pool_get_capacity                     @ 178 NONAME
-	pj_pool_get_used_size                    @ 179 NONAME
-	pj_pool_getobjname                       @ 180 NONAME
-	pj_pool_init_int                         @ 181 NONAME
-	pj_pool_release                          @ 182 NONAME
-	pj_pool_reset                            @ 183 NONAME
-	pj_rand                                  @ 184 NONAME
-	pj_rbtree_erase                          @ 185 NONAME
-	pj_rbtree_find                           @ 186 NONAME
-	pj_rbtree_first                          @ 187 NONAME
-	pj_rbtree_init                           @ 188 NONAME
-	pj_rbtree_insert                         @ 189 NONAME
-	pj_rbtree_last                           @ 190 NONAME
-	pj_rbtree_max_height                     @ 191 NONAME
-	pj_rbtree_min_height                     @ 192 NONAME
-	pj_rbtree_next                           @ 193 NONAME
-	pj_rbtree_prev                           @ 194 NONAME
-	pj_register_strerror                     @ 195 NONAME
-	pj_rwmutex_create                        @ 196 NONAME
-	pj_rwmutex_destroy                       @ 197 NONAME
-	pj_rwmutex_lock_read                     @ 198 NONAME
-	pj_rwmutex_lock_write                    @ 199 NONAME
-	pj_rwmutex_unlock_read                   @ 200 NONAME
-	pj_rwmutex_unlock_write                  @ 201 NONAME
-	pj_sem_create                            @ 202 NONAME
-	pj_sem_destroy                           @ 203 NONAME
-	pj_sem_post                              @ 204 NONAME
-	pj_sem_trywait                           @ 205 NONAME
-	pj_sem_wait                              @ 206 NONAME
-	pj_set_netos_error                       @ 207 NONAME
-	pj_set_os_error                          @ 208 NONAME
-	pj_shutdown                              @ 209 NONAME
-	pj_sock_accept                           @ 210 NONAME
-	pj_sock_bind                             @ 211 NONAME
-	pj_sock_bind_in                          @ 212 NONAME
-	pj_sock_close                            @ 213 NONAME
-	pj_sock_connect                          @ 214 NONAME
-	pj_sock_getpeername                      @ 215 NONAME
-	pj_sock_getsockname                      @ 216 NONAME
-	pj_sock_getsockopt                       @ 217 NONAME
-	pj_sock_listen                           @ 218 NONAME
-	pj_sock_recv                             @ 219 NONAME
-	pj_sock_recvfrom                         @ 220 NONAME
-	pj_sock_select                           @ 221 NONAME
-	pj_sock_send                             @ 222 NONAME
-	pj_sock_sendto                           @ 223 NONAME
-	pj_sock_setsockopt                       @ 224 NONAME
-	pj_sock_shutdown                         @ 225 NONAME
-	pj_sock_socket                           @ 226 NONAME
-	pj_sockaddr_in_init                      @ 227 NONAME
-	pj_sockaddr_in_set_str_addr              @ 228 NONAME
-	pj_srand                                 @ 229 NONAME
-	pj_str                                   @ 230 NONAME
-	pj_strassign                             @ 231 NONAME
-	pj_strcat                                @ 232 NONAME
-	pj_strcat2                               @ 233 NONAME
-	pj_strcmp                                @ 234 NONAME
-	pj_strcmp2                               @ 235 NONAME
-	pj_strcpy                                @ 236 NONAME
-	pj_strcpy2                               @ 237 NONAME
-	pj_strdup                                @ 238 NONAME
-	pj_strdup2                               @ 239 NONAME
-	pj_strdup2_with_null                     @ 240 NONAME
-	pj_strdup3                               @ 241 NONAME
-	pj_strdup_with_null                      @ 242 NONAME
-	pj_strerror                              @ 243 NONAME
-	pj_stricmp                               @ 244 NONAME
-	pj_stricmp2                              @ 245 NONAME
-	pj_strltrim                              @ 246 NONAME
-	pj_strncmp                               @ 247 NONAME
-	pj_strncmp2                              @ 248 NONAME
-	pj_strncpy                               @ 249 NONAME
-	pj_strncpy_with_null                     @ 250 NONAME
-	pj_strnicmp                              @ 251 NONAME
-	pj_strnicmp2                             @ 252 NONAME
-	pj_strrtrim                              @ 253 NONAME
-	pj_strtoul                               @ 254 NONAME
-	pj_strtoul2                              @ 255 NONAME
-	pj_strtrim                               @ 256 NONAME
-	pj_symbianos_poll                        @ 257 NONAME
-	pj_thread_create                         @ 258 NONAME
-	pj_thread_destroy                        @ 259 NONAME
-	pj_thread_get_name                       @ 260 NONAME
-	pj_thread_join                           @ 261 NONAME
-	pj_thread_local_alloc                    @ 262 NONAME
-	pj_thread_local_free                     @ 263 NONAME
-	pj_thread_local_get                      @ 264 NONAME
-	pj_thread_local_set                      @ 265 NONAME
-	pj_thread_register                       @ 266 NONAME
-	pj_thread_resume                         @ 267 NONAME
-	pj_thread_sleep                          @ 268 NONAME
-	pj_thread_this                           @ 269 NONAME
-	pj_time_decode                           @ 270 NONAME
-	pj_time_encode                           @ 271 NONAME
-	pj_time_gmt_to_local                     @ 272 NONAME
-	pj_time_local_to_gmt                     @ 273 NONAME
-	pj_time_val_normalize                    @ 274 NONAME
-	pj_timer_entry_init                      @ 275 NONAME
-	pj_timer_heap_cancel                     @ 276 NONAME
-	pj_timer_heap_count                      @ 277 NONAME
-	pj_timer_heap_create                     @ 278 NONAME
-	pj_timer_heap_destroy                    @ 279 NONAME
-	pj_timer_heap_earliest_time              @ 280 NONAME
-	pj_timer_heap_mem_size                   @ 281 NONAME
-	pj_timer_heap_poll                       @ 282 NONAME
-	pj_timer_heap_schedule                   @ 283 NONAME
-	pj_timer_heap_set_lock                   @ 284 NONAME
-	pj_timer_heap_set_max_timed_out_per_poll @ 285 NONAME
-	pj_unicode_to_ansi                       @ 286 NONAME
-	pj_utoa                                  @ 287 NONAME
-	pj_utoa_pad                              @ 288 NONAME
-	platform_strerror                        @ 289 NONAME
-	snprintf                                 @ 290 NONAME
-	vsnprintf                                @ 291 NONAME
+	PJ_GUID_STRING_LENGTH                    @ 6 NONAME
+	PJ_NO_MEMORY_EXCEPTION                   @ 7 NONAME
+	PJ_VERSION                               @ 8 NONAME
+	pj_AF_INET                               @ 9 NONAME
+	pj_AF_INET6                              @ 10 NONAME
+	pj_AF_IRDA                               @ 11 NONAME
+	pj_AF_PACKET                             @ 12 NONAME
+	pj_AF_UNIX                               @ 13 NONAME
+	pj_GUID_STRING_LENGTH                    @ 14 NONAME
+	pj_IPTOS_LOWDELAY                        @ 15 NONAME
+	pj_IPTOS_MINCOST                         @ 16 NONAME
+	pj_IPTOS_RELIABILITY                     @ 17 NONAME
+	pj_IPTOS_THROUGHPUT                      @ 18 NONAME
+	pj_IP_TOS                                @ 19 NONAME
+	pj_MSG_DONTROUTE                         @ 20 NONAME
+	pj_MSG_OOB                               @ 21 NONAME
+	pj_MSG_PEEK                              @ 22 NONAME
+	pj_NO_MEMORY_EXCEPTION                   @ 23 NONAME
+	pj_SOCK_DGRAM                            @ 24 NONAME
+	pj_SOCK_RAW                              @ 25 NONAME
+	pj_SOCK_RDM                              @ 26 NONAME
+	pj_SOCK_STREAM                           @ 27 NONAME
+	pj_SOL_IP                                @ 28 NONAME
+	pj_SOL_IPV6                              @ 29 NONAME
+	pj_SOL_SOCKET                            @ 30 NONAME
+	pj_SOL_TCP                               @ 31 NONAME
+	pj_SOL_UDP                               @ 32 NONAME
+	pj_SO_RCVBUF                             @ 33 NONAME
+	pj_SO_SNDBUF                             @ 34 NONAME
+	pj_SO_TYPE                               @ 35 NONAME
+	pj_ansi_to_unicode                       @ 36 NONAME
+	pj_array_erase                           @ 37 NONAME
+	pj_array_find                            @ 38 NONAME
+	pj_array_insert                          @ 39 NONAME
+	pj_atexit                                @ 40 NONAME
+	pj_atomic_add                            @ 41 NONAME
+	pj_atomic_add_and_get                    @ 42 NONAME
+	pj_atomic_create                         @ 43 NONAME
+	pj_atomic_dec                            @ 44 NONAME
+	pj_atomic_dec_and_get                    @ 45 NONAME
+	pj_atomic_destroy                        @ 46 NONAME
+	pj_atomic_get                            @ 47 NONAME
+	pj_atomic_inc                            @ 48 NONAME
+	pj_atomic_inc_and_get                    @ 49 NONAME
+	pj_atomic_set                            @ 50 NONAME
+	pj_caching_pool_destroy                  @ 51 NONAME
+	pj_caching_pool_init                     @ 52 NONAME
+	pj_create_random_string                  @ 53 NONAME
+	pj_create_unique_string                  @ 54 NONAME
+	pj_dump_config                           @ 55 NONAME
+	pj_elapsed_cycle                         @ 56 NONAME
+	pj_elapsed_msec                          @ 57 NONAME
+	pj_elapsed_nanosec                       @ 58 NONAME
+	pj_elapsed_time                          @ 59 NONAME
+	pj_elapsed_usec                          @ 60 NONAME
+	pj_enter_critical_section                @ 61 NONAME
+	pj_enum_ip_interface                     @ 62 NONAME
+	pj_enum_ip_route                         @ 63 NONAME
+	pj_exception_id_alloc                    @ 64 NONAME
+	pj_exception_id_free                     @ 65 NONAME
+	pj_exception_id_name                     @ 66 NONAME
+	pj_fifobuf_alloc                         @ 67 NONAME
+	pj_fifobuf_free                          @ 68 NONAME
+	pj_fifobuf_init                          @ 69 NONAME
+	pj_fifobuf_max_size                      @ 70 NONAME
+	pj_fifobuf_unalloc                       @ 71 NONAME
+	pj_file_close                            @ 72 NONAME
+	pj_file_delete                           @ 73 NONAME
+	pj_file_exists                           @ 74 NONAME
+	pj_file_flush                            @ 75 NONAME
+	pj_file_getpos                           @ 76 NONAME
+	pj_file_getstat                          @ 77 NONAME
+	pj_file_move                             @ 78 NONAME
+	pj_file_open                             @ 79 NONAME
+	pj_file_read                             @ 80 NONAME
+	pj_file_setpos                           @ 81 NONAME
+	pj_file_size                             @ 82 NONAME
+	pj_file_write                            @ 83 NONAME
+	pj_generate_unique_string                @ 84 NONAME
+	pj_get_netos_error                       @ 85 NONAME
+	pj_get_os_error                          @ 86 NONAME
+	pj_get_timestamp                         @ 87 NONAME
+	pj_get_timestamp_freq                    @ 88 NONAME
+	pj_get_version                           @ 89 NONAME
+	pj_gethostaddr                           @ 90 NONAME
+	pj_gethostbyname                         @ 91 NONAME
+	pj_gethostip                             @ 92 NONAME
+	pj_gethostname                           @ 93 NONAME
+	pj_getpid                                @ 94 NONAME
+	pj_gettimeofday                          @ 95 NONAME
+	pj_hash_calc                             @ 96 NONAME
+	pj_hash_calc_tolower                     @ 97 NONAME
+	pj_hash_count                            @ 98 NONAME
+	pj_hash_create                           @ 99 NONAME
+	pj_hash_first                            @ 100 NONAME
+	pj_hash_get                              @ 101 NONAME
+	pj_hash_next                             @ 102 NONAME
+	pj_hash_set                              @ 103 NONAME
+	pj_hash_set_np                           @ 104 NONAME
+	pj_hash_this                             @ 105 NONAME
+	pj_htonl                                 @ 106 NONAME
+	pj_htons                                 @ 107 NONAME
+	pj_inet_addr                             @ 108 NONAME
+	pj_inet_addr2                            @ 109 NONAME
+	pj_inet_aton                             @ 110 NONAME
+	pj_inet_ntoa                             @ 111 NONAME
+	pj_init                                  @ 112 NONAME
+	pj_ioqueue_accept                        @ 113 NONAME
+	pj_ioqueue_connect                       @ 114 NONAME
+	pj_ioqueue_create                        @ 115 NONAME
+	pj_ioqueue_destroy                       @ 116 NONAME
+	pj_ioqueue_get_user_data                 @ 117 NONAME
+	pj_ioqueue_is_pending                    @ 118 NONAME
+	pj_ioqueue_name                          @ 119 NONAME
+	pj_ioqueue_op_key_init                   @ 120 NONAME
+	pj_ioqueue_poll                          @ 121 NONAME
+	pj_ioqueue_post_completion               @ 122 NONAME
+	pj_ioqueue_recv                          @ 123 NONAME
+	pj_ioqueue_recvfrom                      @ 124 NONAME
+	pj_ioqueue_register_sock                 @ 125 NONAME
+	pj_ioqueue_send                          @ 126 NONAME
+	pj_ioqueue_sendto                        @ 127 NONAME
+	pj_ioqueue_set_lock                      @ 128 NONAME
+	pj_ioqueue_set_user_data                 @ 129 NONAME
+	pj_ioqueue_unregister                    @ 130 NONAME
+	pj_leave_critical_section                @ 131 NONAME
+	pj_list_erase                            @ 132 NONAME
+	pj_list_find_node                        @ 133 NONAME
+	pj_list_insert_after                     @ 134 NONAME
+	pj_list_insert_before                    @ 135 NONAME
+	pj_list_insert_nodes_after               @ 136 NONAME
+	pj_list_insert_nodes_before              @ 137 NONAME
+	pj_list_merge_first                      @ 138 NONAME
+	pj_list_merge_last                       @ 139 NONAME
+	pj_list_search                           @ 140 NONAME
+	pj_list_size                             @ 141 NONAME
+	pj_lock_acquire                          @ 142 NONAME
+	pj_lock_create_null_mutex                @ 143 NONAME
+	pj_lock_create_recursive_mutex           @ 144 NONAME
+	pj_lock_create_semaphore                 @ 145 NONAME
+	pj_lock_create_simple_mutex              @ 146 NONAME
+	pj_lock_destroy                          @ 147 NONAME
+	pj_lock_release                          @ 148 NONAME
+	pj_lock_tryacquire                       @ 149 NONAME
+	pj_log                                   @ 150 NONAME
+	pj_log_1                                 @ 151 NONAME
+	pj_log_2                                 @ 152 NONAME
+	pj_log_3                                 @ 153 NONAME
+	pj_log_4                                 @ 154 NONAME
+	pj_log_5                                 @ 155 NONAME
+	pj_log_get_decor                         @ 156 NONAME
+	pj_log_get_level                         @ 157 NONAME
+	pj_log_get_log_func                      @ 158 NONAME
+	pj_log_set_decor                         @ 159 NONAME
+	pj_log_set_level                         @ 160 NONAME
+	pj_log_set_log_func                      @ 161 NONAME
+	pj_log_write                             @ 162 NONAME
+	pj_mutex_create                          @ 163 NONAME
+	pj_mutex_create_recursive                @ 164 NONAME
+	pj_mutex_create_simple                   @ 165 NONAME
+	pj_mutex_destroy                         @ 166 NONAME
+	pj_mutex_lock                            @ 167 NONAME
+	pj_mutex_trylock                         @ 168 NONAME
+	pj_mutex_unlock                          @ 169 NONAME
+	pj_ntohl                                 @ 170 NONAME
+	pj_ntohs                                 @ 171 NONAME
+	pj_pool_alloc                            @ 172 NONAME
+	pj_pool_alloc_from_block                 @ 173 NONAME
+	pj_pool_allocate_find                    @ 174 NONAME
+	pj_pool_calloc                           @ 175 NONAME
+	pj_pool_create                           @ 176 NONAME
+	pj_pool_create_int                       @ 177 NONAME
+	pj_pool_create_on_buf                    @ 178 NONAME
+	pj_pool_destroy_int                      @ 179 NONAME
+	pj_pool_factory_default_policy           @ 180 NONAME
+	pj_pool_factory_get_default_policy       @ 181 NONAME
+	pj_pool_get_capacity                     @ 182 NONAME
+	pj_pool_get_used_size                    @ 183 NONAME
+	pj_pool_getobjname                       @ 184 NONAME
+	pj_pool_init_int                         @ 185 NONAME
+	pj_pool_release                          @ 186 NONAME
+	pj_pool_reset                            @ 187 NONAME
+	pj_rand                                  @ 188 NONAME
+	pj_rbtree_erase                          @ 189 NONAME
+	pj_rbtree_find                           @ 190 NONAME
+	pj_rbtree_first                          @ 191 NONAME
+	pj_rbtree_init                           @ 192 NONAME
+	pj_rbtree_insert                         @ 193 NONAME
+	pj_rbtree_last                           @ 194 NONAME
+	pj_rbtree_max_height                     @ 195 NONAME
+	pj_rbtree_min_height                     @ 196 NONAME
+	pj_rbtree_next                           @ 197 NONAME
+	pj_rbtree_prev                           @ 198 NONAME
+	pj_register_strerror                     @ 199 NONAME
+	pj_rwmutex_create                        @ 200 NONAME
+	pj_rwmutex_destroy                       @ 201 NONAME
+	pj_rwmutex_lock_read                     @ 202 NONAME
+	pj_rwmutex_lock_write                    @ 203 NONAME
+	pj_rwmutex_unlock_read                   @ 204 NONAME
+	pj_rwmutex_unlock_write                  @ 205 NONAME
+	pj_sem_create                            @ 206 NONAME
+	pj_sem_destroy                           @ 207 NONAME
+	pj_sem_post                              @ 208 NONAME
+	pj_sem_trywait                           @ 209 NONAME
+	pj_sem_wait                              @ 210 NONAME
+	pj_set_netos_error                       @ 211 NONAME
+	pj_set_os_error                          @ 212 NONAME
+	pj_shutdown                              @ 213 NONAME
+	pj_sock_accept                           @ 214 NONAME
+	pj_sock_bind                             @ 215 NONAME
+	pj_sock_bind_in                          @ 216 NONAME
+	pj_sock_close                            @ 217 NONAME
+	pj_sock_connect                          @ 218 NONAME
+	pj_sock_getpeername                      @ 219 NONAME
+	pj_sock_getsockname                      @ 220 NONAME
+	pj_sock_getsockopt                       @ 221 NONAME
+	pj_sock_listen                           @ 222 NONAME
+	pj_sock_recv                             @ 223 NONAME
+	pj_sock_recvfrom                         @ 224 NONAME
+	pj_sock_select                           @ 225 NONAME
+	pj_sock_send                             @ 226 NONAME
+	pj_sock_sendto                           @ 227 NONAME
+	pj_sock_setsockopt                       @ 228 NONAME
+	pj_sock_shutdown                         @ 229 NONAME
+	pj_sock_socket                           @ 230 NONAME
+	pj_sockaddr_in_init                      @ 231 NONAME
+	pj_sockaddr_in_set_str_addr              @ 232 NONAME
+	pj_srand                                 @ 233 NONAME
+	pj_str                                   @ 234 NONAME
+	pj_strassign                             @ 235 NONAME
+	pj_strcat                                @ 236 NONAME
+	pj_strcat2                               @ 237 NONAME
+	pj_strcmp                                @ 238 NONAME
+	pj_strcmp2                               @ 239 NONAME
+	pj_strcpy                                @ 240 NONAME
+	pj_strcpy2                               @ 241 NONAME
+	pj_strdup                                @ 242 NONAME
+	pj_strdup2                               @ 243 NONAME
+	pj_strdup2_with_null                     @ 244 NONAME
+	pj_strdup3                               @ 245 NONAME
+	pj_strdup_with_null                      @ 246 NONAME
+	pj_strerror                              @ 247 NONAME
+	pj_stricmp                               @ 248 NONAME
+	pj_stricmp2                              @ 249 NONAME
+	pj_strltrim                              @ 250 NONAME
+	pj_strncmp                               @ 251 NONAME
+	pj_strncmp2                              @ 252 NONAME
+	pj_strncpy                               @ 253 NONAME
+	pj_strncpy_with_null                     @ 254 NONAME
+	pj_strnicmp                              @ 255 NONAME
+	pj_strnicmp2                             @ 256 NONAME
+	pj_strrtrim                              @ 257 NONAME
+	pj_strtoul                               @ 258 NONAME
+	pj_strtoul2                              @ 259 NONAME
+	pj_strtrim                               @ 260 NONAME
+	pj_symbianos_poll                        @ 261 NONAME
+	pj_thread_create                         @ 262 NONAME
+	pj_thread_destroy                        @ 263 NONAME
+	pj_thread_get_name                       @ 264 NONAME
+	pj_thread_join                           @ 265 NONAME
+	pj_thread_local_alloc                    @ 266 NONAME
+	pj_thread_local_free                     @ 267 NONAME
+	pj_thread_local_get                      @ 268 NONAME
+	pj_thread_local_set                      @ 269 NONAME
+	pj_thread_register                       @ 270 NONAME
+	pj_thread_resume                         @ 271 NONAME
+	pj_thread_sleep                          @ 272 NONAME
+	pj_thread_this                           @ 273 NONAME
+	pj_time_decode                           @ 274 NONAME
+	pj_time_encode                           @ 275 NONAME
+	pj_time_gmt_to_local                     @ 276 NONAME
+	pj_time_local_to_gmt                     @ 277 NONAME
+	pj_time_val_normalize                    @ 278 NONAME
+	pj_timer_entry_init                      @ 279 NONAME
+	pj_timer_heap_cancel                     @ 280 NONAME
+	pj_timer_heap_count                      @ 281 NONAME
+	pj_timer_heap_create                     @ 282 NONAME
+	pj_timer_heap_destroy                    @ 283 NONAME
+	pj_timer_heap_earliest_time              @ 284 NONAME
+	pj_timer_heap_mem_size                   @ 285 NONAME
+	pj_timer_heap_poll                       @ 286 NONAME
+	pj_timer_heap_schedule                   @ 287 NONAME
+	pj_timer_heap_set_lock                   @ 288 NONAME
+	pj_timer_heap_set_max_timed_out_per_poll @ 289 NONAME
+	pj_unicode_to_ansi                       @ 290 NONAME
+	pj_utoa                                  @ 291 NONAME
+	pj_utoa_pad                              @ 292 NONAME
+	platform_strerror                        @ 293 NONAME
+	snprintf                                 @ 294 NONAME
+	vsnprintf                                @ 295 NONAME
Index: pjproject/trunk/build.symbian/pjmedia.mmp
===================================================================
--- pjproject/trunk/build.symbian/pjmedia.mmp	(revision 1416)
+++ pjproject/trunk/build.symbian/pjmedia.mmp	(revision 1417)
@@ -1,6 +1,22 @@
+#if defined(EKA2)
+
+TARGET		pjmedia.dll
+TARGETTYPE	dll
+UID		0x1000008d 0xA0004295
+CAPABILITY	None
+LIBRARY		null_audio.lib pjsdp.lib pjnath.lib pjlib_util.lib pjlib.lib esock.lib insock.lib charconv.lib euser.lib estlib.lib
+MACRO		PJ_DLL
+MACRO		PJ_EXPORTING
+
+DEFFILE		.\pjmedia.def
+
+#else
+
 TARGET 		pjmedia.lib
 TARGETTYPE 	lib
 UID		0x100039CE 0x10004299
 VENDORID	0x70000001
+
+#endif
 
 SOURCEPATH	..\pjmedia\src\pjmedia
@@ -38,8 +54,5 @@
 SOURCE		rtcp.c
 SOURCE		rtp.c
-//SDP files are in pjsdp.mmp
-//SOURCE		sdp.c
-//SOURCE		sdp_cmp.c
-//SOURCE		sdp_neg.c
+//SDP files are in pjsdp.mmp: sdp.c, sdp_cmp.c, sdp_neg.c
 SOURCE		session.c
 SOURCE		silencedet.c
@@ -77,4 +90,3 @@
 //SYSTEMINCLUDE	\epoc32\include\mmf\plugin
 
-CAPABILITY	None
 
Index: pjproject/trunk/build.symbian/pjmediaU.def
===================================================================
--- pjproject/trunk/build.symbian/pjmediaU.def	(revision 1417)
+++ pjproject/trunk/build.symbian/pjmediaU.def	(revision 1417)
@@ -0,0 +1,186 @@
+EXPORTS
+	echo_supp_cancel_echo                    @ 1 NONAME
+	echo_supp_capture                        @ 2 NONAME
+	echo_supp_create                         @ 3 NONAME
+	echo_supp_destroy                        @ 4 NONAME
+	echo_supp_playback                       @ 5 NONAME
+	pjmedia_bidirectional_port_create        @ 6 NONAME
+	pjmedia_calc_avg_signal                  @ 7 NONAME
+	pjmedia_clock_create                     @ 8 NONAME
+	pjmedia_clock_destroy                    @ 9 NONAME
+	pjmedia_clock_start                      @ 10 NONAME
+	pjmedia_clock_stop                       @ 11 NONAME
+	pjmedia_clock_wait                       @ 12 NONAME
+	pjmedia_codec_g711_deinit                @ 13 NONAME
+	pjmedia_codec_g711_init                  @ 14 NONAME
+	pjmedia_codec_info_to_id                 @ 15 NONAME
+	pjmedia_codec_mgr_alloc_codec            @ 16 NONAME
+	pjmedia_codec_mgr_dealloc_codec          @ 17 NONAME
+	pjmedia_codec_mgr_enum_codecs            @ 18 NONAME
+	pjmedia_codec_mgr_find_codecs_by_id      @ 19 NONAME
+	pjmedia_codec_mgr_get_codec_info         @ 20 NONAME
+	pjmedia_codec_mgr_get_default_param      @ 21 NONAME
+	pjmedia_codec_mgr_init                   @ 22 NONAME
+	pjmedia_codec_mgr_register_factory       @ 23 NONAME
+	pjmedia_codec_mgr_set_codec_priority     @ 24 NONAME
+	pjmedia_codec_mgr_unregister_factory     @ 25 NONAME
+	pjmedia_conf_add_passive_port            @ 26 NONAME
+	pjmedia_conf_add_port                    @ 27 NONAME
+	pjmedia_conf_adjust_rx_level             @ 28 NONAME
+	pjmedia_conf_adjust_tx_level             @ 29 NONAME
+	pjmedia_conf_configure_port              @ 30 NONAME
+	pjmedia_conf_connect_port                @ 31 NONAME
+	pjmedia_conf_create                      @ 32 NONAME
+	pjmedia_conf_destroy                     @ 33 NONAME
+	pjmedia_conf_disconnect_port             @ 34 NONAME
+	pjmedia_conf_enum_ports                  @ 35 NONAME
+	pjmedia_conf_get_connect_count           @ 36 NONAME
+	pjmedia_conf_get_master_port             @ 37 NONAME
+	pjmedia_conf_get_port_count              @ 38 NONAME
+	pjmedia_conf_get_port_info               @ 39 NONAME
+	pjmedia_conf_get_ports_info              @ 40 NONAME
+	pjmedia_conf_get_signal_level            @ 41 NONAME
+	pjmedia_conf_remove_port                 @ 42 NONAME
+	pjmedia_conf_set_port0_name              @ 43 NONAME
+	pjmedia_echo_cancel                      @ 44 NONAME
+	pjmedia_echo_capture                     @ 45 NONAME
+	pjmedia_echo_create                      @ 46 NONAME
+	pjmedia_echo_destroy                     @ 47 NONAME
+	pjmedia_echo_playback                    @ 48 NONAME
+	pjmedia_echo_port_create                 @ 49 NONAME
+	pjmedia_endpt_create                     @ 50 NONAME
+	pjmedia_endpt_create_pool                @ 51 NONAME
+	pjmedia_endpt_create_sdp                 @ 52 NONAME
+	pjmedia_endpt_destroy                    @ 53 NONAME
+	pjmedia_endpt_dump                       @ 54 NONAME
+	pjmedia_endpt_get_codec_mgr              @ 55 NONAME
+	pjmedia_endpt_get_ioqueue                @ 56 NONAME
+	pjmedia_ice_create                       @ 57 NONAME
+	pjmedia_ice_destroy                      @ 58 NONAME
+	pjmedia_ice_get_comp                     @ 59 NONAME
+	pjmedia_ice_get_init_status              @ 60 NONAME
+	pjmedia_ice_init_ice                     @ 61 NONAME
+	pjmedia_ice_modify_sdp                   @ 62 NONAME
+	pjmedia_ice_start_ice                    @ 63 NONAME
+	pjmedia_ice_start_init                   @ 64 NONAME
+	pjmedia_ice_stop_ice                     @ 65 NONAME
+	pjmedia_jbuf_create                      @ 66 NONAME
+	pjmedia_jbuf_destroy                     @ 67 NONAME
+	pjmedia_jbuf_get_frame                   @ 68 NONAME
+	pjmedia_jbuf_get_state                   @ 69 NONAME
+	pjmedia_jbuf_put_frame                   @ 70 NONAME
+	pjmedia_jbuf_reset                       @ 71 NONAME
+	pjmedia_jbuf_set_adaptive                @ 72 NONAME
+	pjmedia_jbuf_set_fixed                   @ 73 NONAME
+	pjmedia_master_port_create               @ 74 NONAME
+	pjmedia_master_port_destroy              @ 75 NONAME
+	pjmedia_master_port_get_dport            @ 76 NONAME
+	pjmedia_master_port_get_uport            @ 77 NONAME
+	pjmedia_master_port_set_dport            @ 78 NONAME
+	pjmedia_master_port_set_uport            @ 79 NONAME
+	pjmedia_master_port_start                @ 80 NONAME
+	pjmedia_master_port_stop                 @ 81 NONAME
+	pjmedia_mem_capture_create               @ 82 NONAME
+	pjmedia_mem_capture_get_size             @ 83 NONAME
+	pjmedia_mem_capture_set_eof_cb           @ 84 NONAME
+	pjmedia_mem_player_create                @ 85 NONAME
+	pjmedia_mem_player_set_eof_cb            @ 86 NONAME
+	pjmedia_null_port_create                 @ 87 NONAME
+	pjmedia_plc_create                       @ 88 NONAME
+	pjmedia_plc_generate                     @ 89 NONAME
+	pjmedia_plc_save                         @ 90 NONAME
+	pjmedia_port_destroy                     @ 91 NONAME
+	pjmedia_port_get_frame                   @ 92 NONAME
+	pjmedia_port_info_init                   @ 93 NONAME
+	pjmedia_port_put_frame                   @ 94 NONAME
+	pjmedia_resample_create                  @ 95 NONAME
+	pjmedia_resample_destroy                 @ 96 NONAME
+	pjmedia_resample_get_input_size          @ 97 NONAME
+	pjmedia_resample_port_create             @ 98 NONAME
+	pjmedia_resample_run                     @ 99 NONAME
+	pjmedia_rtcp_build_rtcp                  @ 100 NONAME
+	pjmedia_rtcp_fini                        @ 101 NONAME
+	pjmedia_rtcp_get_ntp_time                @ 102 NONAME
+	pjmedia_rtcp_init                        @ 103 NONAME
+	pjmedia_rtcp_rx_rtcp                     @ 104 NONAME
+	pjmedia_rtcp_rx_rtp                      @ 105 NONAME
+	pjmedia_rtcp_tx_rtp                      @ 106 NONAME
+	pjmedia_rtp_decode_rtp                   @ 107 NONAME
+	pjmedia_rtp_encode_rtp                   @ 108 NONAME
+	pjmedia_rtp_session_init                 @ 109 NONAME
+	pjmedia_rtp_session_update               @ 110 NONAME
+	pjmedia_session_check_dtmf               @ 111 NONAME
+	pjmedia_session_create                   @ 112 NONAME
+	pjmedia_session_destroy                  @ 113 NONAME
+	pjmedia_session_dial_dtmf                @ 114 NONAME
+	pjmedia_session_enum_streams             @ 115 NONAME
+	pjmedia_session_get_dtmf                 @ 116 NONAME
+	pjmedia_session_get_info                 @ 117 NONAME
+	pjmedia_session_get_port                 @ 118 NONAME
+	pjmedia_session_get_stream_stat          @ 119 NONAME
+	pjmedia_session_info_from_sdp            @ 120 NONAME
+	pjmedia_session_pause                    @ 121 NONAME
+	pjmedia_session_pause_stream             @ 122 NONAME
+	pjmedia_session_resume                   @ 123 NONAME
+	pjmedia_session_resume_stream            @ 124 NONAME
+	pjmedia_session_set_dtmf_callback        @ 125 NONAME
+	pjmedia_silence_det_apply                @ 126 NONAME
+	pjmedia_silence_det_create               @ 127 NONAME
+	pjmedia_silence_det_detect               @ 128 NONAME
+	pjmedia_silence_det_disable              @ 129 NONAME
+	pjmedia_silence_det_set_adaptive         @ 130 NONAME
+	pjmedia_silence_det_set_fixed            @ 131 NONAME
+	pjmedia_silence_det_set_name             @ 132 NONAME
+	pjmedia_silence_det_set_params           @ 133 NONAME
+	pjmedia_snd_port_connect                 @ 134 NONAME
+	pjmedia_snd_port_create                  @ 135 NONAME
+	pjmedia_snd_port_create_player           @ 136 NONAME
+	pjmedia_snd_port_create_rec              @ 137 NONAME
+	pjmedia_snd_port_destroy                 @ 138 NONAME
+	pjmedia_snd_port_disconnect              @ 139 NONAME
+	pjmedia_snd_port_get_ec_tail             @ 140 NONAME
+	pjmedia_snd_port_get_port                @ 141 NONAME
+	pjmedia_snd_port_get_snd_stream          @ 142 NONAME
+	pjmedia_snd_port_set_ec                  @ 143 NONAME
+	pjmedia_splitcomb_create                 @ 144 NONAME
+	pjmedia_splitcomb_create_rev_channel     @ 145 NONAME
+	pjmedia_splitcomb_set_channel            @ 146 NONAME
+	pjmedia_stream_check_dtmf                @ 147 NONAME
+	pjmedia_stream_create                    @ 148 NONAME
+	pjmedia_stream_destroy                   @ 149 NONAME
+	pjmedia_stream_dial_dtmf                 @ 150 NONAME
+	pjmedia_stream_get_dtmf                  @ 151 NONAME
+	pjmedia_stream_get_port                  @ 152 NONAME
+	pjmedia_stream_get_stat                  @ 153 NONAME
+	pjmedia_stream_get_transport             @ 154 NONAME
+	pjmedia_stream_info_from_sdp             @ 155 NONAME
+	pjmedia_stream_pause                     @ 156 NONAME
+	pjmedia_stream_resume                    @ 157 NONAME
+	pjmedia_stream_set_dtmf_callback         @ 158 NONAME
+	pjmedia_stream_start                     @ 159 NONAME
+	pjmedia_strerror                         @ 160 NONAME
+	pjmedia_tonegen_create                   @ 161 NONAME
+	pjmedia_tonegen_create2                  @ 162 NONAME
+	pjmedia_tonegen_get_digit_map            @ 163 NONAME
+	pjmedia_tonegen_is_busy                  @ 164 NONAME
+	pjmedia_tonegen_play                     @ 165 NONAME
+	pjmedia_tonegen_play_digits              @ 166 NONAME
+	pjmedia_tonegen_set_digit_map            @ 167 NONAME
+	pjmedia_tonegen_stop                     @ 168 NONAME
+	pjmedia_transport_udp_attach             @ 169 NONAME
+	pjmedia_transport_udp_close              @ 170 NONAME
+	pjmedia_transport_udp_create             @ 171 NONAME
+	pjmedia_transport_udp_create2            @ 172 NONAME
+	pjmedia_transport_udp_get_info           @ 173 NONAME
+	pjmedia_transport_udp_simulate_lost      @ 174 NONAME
+	pjmedia_wav_player_port_create           @ 175 NONAME
+	pjmedia_wav_player_port_get_pos          @ 176 NONAME
+	pjmedia_wav_player_port_set_pos          @ 177 NONAME
+	pjmedia_wav_player_set_eof_cb            @ 178 NONAME
+	pjmedia_wav_playlist_create              @ 179 NONAME
+	pjmedia_wav_playlist_set_eof_cb          @ 180 NONAME
+	pjmedia_wav_writer_port_create           @ 181 NONAME
+	pjmedia_wav_writer_port_get_pos          @ 182 NONAME
+	pjmedia_wav_writer_port_set_cb           @ 183 NONAME
+	pjmedia_wave_hdr_file_to_host            @ 184 NONAME
+	pjmedia_wave_hdr_host_to_file            @ 185 NONAME
Index: pjproject/trunk/build.symbian/pjproject.cww
===================================================================
--- pjproject/trunk/build.symbian/pjproject.cww	(revision 1416)
+++ pjproject/trunk/build.symbian/pjproject.cww	(revision 1417)
@@ -55,5 +55,5 @@
             <DOCKBARID>59420</DOCKBARID>
             <PCTWIDTH>1.000000</PCTWIDTH>
-            <HGT>294</HGT>
+            <HGT>274</HGT>
             <GROUPID>
                 <GIDHIGHPART>4294967294</GIDHIGHPART>
@@ -80,5 +80,5 @@
             <DOCKBARID>59420</DOCKBARID>
             <PCTWIDTH>1.000000</PCTWIDTH>
-            <HGT>294</HGT>
+            <HGT>274</HGT>
             <GROUPID>
                 <GIDHIGHPART>4294967294</GIDHIGHPART>
@@ -105,5 +105,30 @@
             <DOCKBARID>59420</DOCKBARID>
             <PCTWIDTH>1.000000</PCTWIDTH>
-            <HGT>294</HGT>
+            <HGT>274</HGT>
+            <GROUPID>
+                <GIDHIGHPART>4294967294</GIDHIGHPART>
+                <GIDLOWPART>4294967294</GIDLOWPART>
+            </GROUPID>
+        </DOCKINFO>
+    </WINDOW>
+    <WINDOW>
+        <SESSION>-1</SESSION>
+        <EDOCTYPE>0</EDOCTYPE>
+        <PATH USERELATIVEPATHS = "true">null_audio.mcp</PATH>
+        <FRAMELOC>
+            <X>0</X>
+            <Y>0</Y>
+        </FRAMELOC>
+        <FRAMESIZE>
+            <W>347</W>
+            <H>128</H>
+        </FRAMESIZE>
+        <DOCKINFO>
+            <STATUS>1</STATUS>
+            <ROW>0</ROW>
+            <COLUMN>0</COLUMN>
+            <DOCKBARID>59420</DOCKBARID>
+            <PCTWIDTH>1.000000</PCTWIDTH>
+            <HGT>274</HGT>
             <GROUPID>
                 <GIDHIGHPART>4294967294</GIDHIGHPART>
@@ -130,5 +155,30 @@
             <DOCKBARID>59420</DOCKBARID>
             <PCTWIDTH>1.000000</PCTWIDTH>
-            <HGT>294</HGT>
+            <HGT>274</HGT>
+            <GROUPID>
+                <GIDHIGHPART>4294967294</GIDHIGHPART>
+                <GIDLOWPART>4294967294</GIDLOWPART>
+            </GROUPID>
+        </DOCKINFO>
+    </WINDOW>
+    <WINDOW>
+        <SESSION>-1</SESSION>
+        <EDOCTYPE>0</EDOCTYPE>
+        <PATH USERELATIVEPATHS = "true">pjsdp.mcp</PATH>
+        <FRAMELOC>
+            <X>0</X>
+            <Y>0</Y>
+        </FRAMELOC>
+        <FRAMESIZE>
+            <W>347</W>
+            <H>128</H>
+        </FRAMESIZE>
+        <DOCKINFO>
+            <STATUS>1</STATUS>
+            <ROW>0</ROW>
+            <COLUMN>0</COLUMN>
+            <DOCKBARID>59420</DOCKBARID>
+            <PCTWIDTH>1.000000</PCTWIDTH>
+            <HGT>274</HGT>
             <GROUPID>
                 <GIDHIGHPART>4294967294</GIDHIGHPART>
@@ -155,5 +205,30 @@
             <DOCKBARID>59420</DOCKBARID>
             <PCTWIDTH>1.000000</PCTWIDTH>
-            <HGT>294</HGT>
+            <HGT>274</HGT>
+            <GROUPID>
+                <GIDHIGHPART>4294967294</GIDHIGHPART>
+                <GIDLOWPART>4294967294</GIDLOWPART>
+            </GROUPID>
+        </DOCKINFO>
+    </WINDOW>
+    <WINDOW>
+        <SESSION>-1</SESSION>
+        <EDOCTYPE>0</EDOCTYPE>
+        <PATH USERELATIVEPATHS = "true">pjsip_simple.mcp</PATH>
+        <FRAMELOC>
+            <X>0</X>
+            <Y>0</Y>
+        </FRAMELOC>
+        <FRAMESIZE>
+            <W>347</W>
+            <H>128</H>
+        </FRAMESIZE>
+        <DOCKINFO>
+            <STATUS>1</STATUS>
+            <ROW>0</ROW>
+            <COLUMN>0</COLUMN>
+            <DOCKBARID>59420</DOCKBARID>
+            <PCTWIDTH>1.000000</PCTWIDTH>
+            <HGT>274</HGT>
             <GROUPID>
                 <GIDHIGHPART>4294967294</GIDHIGHPART>
@@ -180,30 +255,5 @@
             <DOCKBARID>59420</DOCKBARID>
             <PCTWIDTH>1.000000</PCTWIDTH>
-            <HGT>294</HGT>
-            <GROUPID>
-                <GIDHIGHPART>4294967294</GIDHIGHPART>
-                <GIDLOWPART>4294967294</GIDLOWPART>
-            </GROUPID>
-        </DOCKINFO>
-    </WINDOW>
-    <WINDOW>
-        <SESSION>-1</SESSION>
-        <EDOCTYPE>0</EDOCTYPE>
-        <PATH USERELATIVEPATHS = "true">pjsip_simple.mcp</PATH>
-        <FRAMELOC>
-            <X>0</X>
-            <Y>0</Y>
-        </FRAMELOC>
-        <FRAMESIZE>
-            <W>347</W>
-            <H>128</H>
-        </FRAMESIZE>
-        <DOCKINFO>
-            <STATUS>1</STATUS>
-            <ROW>0</ROW>
-            <COLUMN>0</COLUMN>
-            <DOCKBARID>59420</DOCKBARID>
-            <PCTWIDTH>1.000000</PCTWIDTH>
-            <HGT>294</HGT>
+            <HGT>274</HGT>
             <GROUPID>
                 <GIDHIGHPART>4294967294</GIDHIGHPART>
@@ -230,30 +280,5 @@
             <DOCKBARID>59420</DOCKBARID>
             <PCTWIDTH>1.000000</PCTWIDTH>
-            <HGT>294</HGT>
-            <GROUPID>
-                <GIDHIGHPART>4294967294</GIDHIGHPART>
-                <GIDLOWPART>4294967294</GIDLOWPART>
-            </GROUPID>
-        </DOCKINFO>
-    </WINDOW>
-    <WINDOW>
-        <SESSION>-1</SESSION>
-        <EDOCTYPE>0</EDOCTYPE>
-        <PATH USERELATIVEPATHS = "true">null_audio.mcp</PATH>
-        <FRAMELOC>
-            <X>0</X>
-            <Y>0</Y>
-        </FRAMELOC>
-        <FRAMESIZE>
-            <W>347</W>
-            <H>128</H>
-        </FRAMESIZE>
-        <DOCKINFO>
-            <STATUS>1</STATUS>
-            <ROW>0</ROW>
-            <COLUMN>0</COLUMN>
-            <DOCKBARID>59420</DOCKBARID>
-            <PCTWIDTH>1.000000</PCTWIDTH>
-            <HGT>294</HGT>
+            <HGT>274</HGT>
             <GROUPID>
                 <GIDHIGHPART>4294967294</GIDHIGHPART>
@@ -280,80 +305,8 @@
             <DOCKBARID>59420</DOCKBARID>
             <PCTWIDTH>1.000000</PCTWIDTH>
-            <HGT>294</HGT>
-            <GROUPID>
-                <GIDHIGHPART>4294967294</GIDHIGHPART>
-                <GIDLOWPART>4294967294</GIDLOWPART>
-            </GROUPID>
-        </DOCKINFO>
-    </WINDOW>
-    <WINDOW>
-        <SESSION>-2147483648</SESSION>
-        <EDOCTYPE>36</EDOCTYPE>
-        <FRAMELOC>
-            <X>4</X>
-            <Y>23</Y>
-        </FRAMELOC>
-        <FRAMESIZE>
-            <W>534</W>
-            <H>921</H>
-        </FRAMESIZE>
-        <DOCKINFO>
-            <STATUS>0</STATUS>
-            <ROW></ROW>
-            <COLUMN></COLUMN>
-            <DOCKBARID></DOCKBARID>
-            <PCTWIDTH></PCTWIDTH>
-            <HGT></HGT>
-            <GROUPID>
-                <GIDHIGHPART></GIDHIGHPART>
-                <GIDLOWPART></GIDLOWPART>
-            </GROUPID>
-        </DOCKINFO>
-    </WINDOW>
-    <WINDOW>
-        <SESSION>-2147483648</SESSION>
-        <EDOCTYPE>20</EDOCTYPE>
-        <FRAMELOC>
-            <X>4</X>
-            <Y>23</Y>
-        </FRAMELOC>
-        <FRAMESIZE>
-            <W>1008</W>
-            <H>2142</H>
-        </FRAMESIZE>
-        <DOCKINFO>
-            <STATUS>0</STATUS>
-            <ROW></ROW>
-            <COLUMN></COLUMN>
-            <DOCKBARID></DOCKBARID>
-            <PCTWIDTH></PCTWIDTH>
-            <HGT></HGT>
-            <GROUPID>
-                <GIDHIGHPART></GIDHIGHPART>
-                <GIDLOWPART></GIDLOWPART>
-            </GROUPID>
-        </DOCKINFO>
-    </WINDOW>
-    <WINDOW>
-        <SESSION>-2147483648</SESSION>
-        <EDOCTYPE>23</EDOCTYPE>
-        <FRAMELOC>
-            <X>6</X>
-            <Y>81</Y>
-        </FRAMELOC>
-        <FRAMESIZE>
-            <W>566</W>
-            <H>477</H>
-        </FRAMESIZE>
-        <DOCKINFO>
-            <STATUS>0</STATUS>
-            <ROW></ROW>
-            <COLUMN></COLUMN>
-            <DOCKBARID></DOCKBARID>
-            <PCTWIDTH></PCTWIDTH>
-            <HGT></HGT>
-            <GROUPID>
-                <GIDHIGHPART></GIDHIGHPART>
-                <GIDLOWPART></GIDLOWPART>
+            <HGT>274</HGT>
+            <GROUPID>
+                <GIDHIGHPART>4294967294</GIDHIGHPART>
+                <GIDLOWPART>4294967294</GIDLOWPART>
             </GROUPID>
         </DOCKINFO>
Index: pjproject/trunk/build.symbian/pjsdp.mmp
===================================================================
--- pjproject/trunk/build.symbian/pjsdp.mmp	(revision 1416)
+++ pjproject/trunk/build.symbian/pjsdp.mmp	(revision 1417)
@@ -1,6 +1,21 @@
+#if defined(EKA2)
+TARGET		pjsdp.dll
+TARGETTYPE	dll
+UID		0x1000008d 0xA0004296
+CAPABILITY	None
+LIBRARY		pjlib_util.lib pjlib.lib charconv.lib euser.lib estlib.lib
+MACRO		PJ_DLL
+MACRO		PJ_EXPORTING
+
+DEFFILE		.\pjsdp.def
+
+#else
+
 TARGET 		pjsdp.lib
 TARGETTYPE 	lib
 UID		0x100039CE 0x10004299
 VENDORID	0x70000001
+
+#endif
 
 SOURCEPATH	..\pjmedia\src\pjmedia
Index: pjproject/trunk/build.symbian/pjsdpU.def
===================================================================
--- pjproject/trunk/build.symbian/pjsdpU.def	(revision 1417)
+++ pjproject/trunk/build.symbian/pjsdpU.def	(revision 1417)
@@ -0,0 +1,45 @@
+EXPORTS
+	pjmedia_sdp_attr_add                     @ 1 NONAME
+	pjmedia_sdp_attr_clone                   @ 2 NONAME
+	pjmedia_sdp_attr_create                  @ 3 NONAME
+	pjmedia_sdp_attr_find                    @ 4 NONAME
+	pjmedia_sdp_attr_find2                   @ 5 NONAME
+	pjmedia_sdp_attr_get_fmtp                @ 6 NONAME
+	pjmedia_sdp_attr_get_rtcp                @ 7 NONAME
+	pjmedia_sdp_attr_get_rtpmap              @ 8 NONAME
+	pjmedia_sdp_attr_remove                  @ 9 NONAME
+	pjmedia_sdp_attr_remove_all              @ 10 NONAME
+	pjmedia_sdp_attr_to_rtpmap               @ 11 NONAME
+	pjmedia_sdp_conn_clone                   @ 12 NONAME
+	pjmedia_sdp_media_add_attr               @ 13 NONAME
+	pjmedia_sdp_media_clone                  @ 14 NONAME
+	pjmedia_sdp_media_cmp                    @ 15 NONAME
+	pjmedia_sdp_media_find_attr              @ 16 NONAME
+	pjmedia_sdp_media_find_attr2             @ 17 NONAME
+	pjmedia_sdp_media_remove_all_attr        @ 18 NONAME
+	pjmedia_sdp_media_remove_attr            @ 19 NONAME
+	pjmedia_sdp_neg_cancel_offer             @ 20 NONAME
+	pjmedia_sdp_neg_create_w_local_offer     @ 21 NONAME
+	pjmedia_sdp_neg_create_w_remote_offer    @ 22 NONAME
+	pjmedia_sdp_neg_get_active_local         @ 23 NONAME
+	pjmedia_sdp_neg_get_active_remote        @ 24 NONAME
+	pjmedia_sdp_neg_get_neg_local            @ 25 NONAME
+	pjmedia_sdp_neg_get_neg_remote           @ 26 NONAME
+	pjmedia_sdp_neg_get_state                @ 27 NONAME
+	pjmedia_sdp_neg_has_local_answer         @ 28 NONAME
+	pjmedia_sdp_neg_modify_local_offer       @ 29 NONAME
+	pjmedia_sdp_neg_negotiate                @ 30 NONAME
+	pjmedia_sdp_neg_send_local_offer         @ 31 NONAME
+	pjmedia_sdp_neg_set_local_answer         @ 32 NONAME
+	pjmedia_sdp_neg_set_prefer_remote_codec_order @ 33 NONAME
+	pjmedia_sdp_neg_set_remote_answer        @ 34 NONAME
+	pjmedia_sdp_neg_set_remote_offer         @ 35 NONAME
+	pjmedia_sdp_neg_state_str                @ 36 NONAME
+	pjmedia_sdp_neg_was_answer_remote        @ 37 NONAME
+	pjmedia_sdp_parse                        @ 38 NONAME
+	pjmedia_sdp_print                        @ 39 NONAME
+	pjmedia_sdp_rtpmap_to_attr               @ 40 NONAME
+	pjmedia_sdp_session_clone                @ 41 NONAME
+	pjmedia_sdp_session_cmp                  @ 42 NONAME
+	pjmedia_sdp_validate                     @ 43 NONAME
+	pjmedia_strerror                         @ 44 NONAME
Index: pjproject/trunk/build.symbian/pjsip.mmp
===================================================================
--- pjproject/trunk/build.symbian/pjsip.mmp	(revision 1416)
+++ pjproject/trunk/build.symbian/pjsip.mmp	(revision 1417)
@@ -1,6 +1,24 @@
+#if defined(EKA2)
+
+TARGET		pjsip.dll
+TARGETTYPE	dll
+
+UID		0x1000008d 0xA0004293
+
+CAPABILITY	None
+LIBRARY		pjsdp.lib pjlib_util.lib pjlib.lib esock.lib insock.lib charconv.lib euser.lib estlib.lib
+MACRO		PJ_DLL
+MACRO		PJ_EXPORTING
+
+DEFFILE		.\pjsip.def
+
+#else
+
 TARGET 		pjsip.lib
 TARGETTYPE 	lib
 UID		0x100039CE 0x10004299
 VENDORID	0x70000001
+
+#endif
 
 SOURCEPATH	..\pjsip\src\pjsip
@@ -44,4 +62,3 @@
 SYSTEMINCLUDE	\epoc32\include\libc
 
-CAPABILITY	None
 
Index: pjproject/trunk/build.symbian/pjsipU.def
===================================================================
--- pjproject/trunk/build.symbian/pjsipU.def	(revision 1417)
+++ pjproject/trunk/build.symbian/pjsipU.def	(revision 1417)
@@ -0,0 +1,269 @@
+EXPORTS
+	pjsip_accept_hdr_create                  @ 1 NONAME
+	pjsip_accept_hdr_init                    @ 2 NONAME
+	pjsip_ack_method                         @ 3 NONAME
+	pjsip_allow_hdr_create                   @ 4 NONAME
+	pjsip_allow_hdr_init                     @ 5 NONAME
+	pjsip_auth_clt_clone                     @ 6 NONAME
+	pjsip_auth_clt_init                      @ 7 NONAME
+	pjsip_auth_clt_init_req                  @ 8 NONAME
+	pjsip_auth_clt_reinit_req                @ 9 NONAME
+	pjsip_auth_clt_set_credentials           @ 10 NONAME
+	pjsip_auth_deinit_parser                 @ 11 NONAME
+	pjsip_auth_init_parser                   @ 12 NONAME
+	pjsip_auth_srv_challenge                 @ 13 NONAME
+	pjsip_auth_srv_init                      @ 14 NONAME
+	pjsip_auth_srv_verify                    @ 15 NONAME
+	pjsip_authorization_hdr_create           @ 16 NONAME
+	pjsip_bye_method                         @ 17 NONAME
+	pjsip_calculate_branch_id                @ 18 NONAME
+	pjsip_cancel_method                      @ 19 NONAME
+	pjsip_cid_hdr_create                     @ 20 NONAME
+	pjsip_cid_hdr_init                       @ 21 NONAME
+	pjsip_clen_hdr_create                    @ 22 NONAME
+	pjsip_clen_hdr_init                      @ 23 NONAME
+	pjsip_clone_text_data                    @ 24 NONAME
+	pjsip_concat_param_imp                   @ 25 NONAME
+	pjsip_contact_hdr_create                 @ 26 NONAME
+	pjsip_contact_hdr_init                   @ 27 NONAME
+	pjsip_cseq_hdr_create                    @ 28 NONAME
+	pjsip_cseq_hdr_init                      @ 29 NONAME
+	pjsip_ctype_hdr_create                   @ 30 NONAME
+	pjsip_ctype_hdr_init                     @ 31 NONAME
+	pjsip_dlg_add_usage                      @ 32 NONAME
+	pjsip_dlg_create_request                 @ 33 NONAME
+	pjsip_dlg_create_response                @ 34 NONAME
+	pjsip_dlg_create_uac                     @ 35 NONAME
+	pjsip_dlg_create_uas                     @ 36 NONAME
+	pjsip_dlg_dec_lock                       @ 37 NONAME
+	pjsip_dlg_dec_session                    @ 38 NONAME
+	pjsip_dlg_fork                           @ 39 NONAME
+	pjsip_dlg_get_mod_data                   @ 40 NONAME
+	pjsip_dlg_inc_lock                       @ 41 NONAME
+	pjsip_dlg_inc_session                    @ 42 NONAME
+	pjsip_dlg_modify_response                @ 43 NONAME
+	pjsip_dlg_respond                        @ 44 NONAME
+	pjsip_dlg_send_request                   @ 45 NONAME
+	pjsip_dlg_send_response                  @ 46 NONAME
+	pjsip_dlg_set_mod_data                   @ 47 NONAME
+	pjsip_dlg_set_route_set                  @ 48 NONAME
+	pjsip_dlg_set_transport                  @ 49 NONAME
+	pjsip_dlg_terminate                      @ 50 NONAME
+	pjsip_dlg_try_inc_lock                   @ 51 NONAME
+	pjsip_endpt_acquire_transport            @ 52 NONAME
+	pjsip_endpt_add_capability               @ 53 NONAME
+	pjsip_endpt_cancel_timer                 @ 54 NONAME
+	pjsip_endpt_create                       @ 55 NONAME
+	pjsip_endpt_create_ack                   @ 56 NONAME
+	pjsip_endpt_create_cancel                @ 57 NONAME
+	pjsip_endpt_create_pool                  @ 58 NONAME
+	pjsip_endpt_create_request               @ 59 NONAME
+	pjsip_endpt_create_request_from_hdr      @ 60 NONAME
+	pjsip_endpt_create_request_fwd           @ 61 NONAME
+	pjsip_endpt_create_resolver              @ 62 NONAME
+	pjsip_endpt_create_response              @ 63 NONAME
+	pjsip_endpt_create_response_fwd          @ 64 NONAME
+	pjsip_endpt_create_tdata                 @ 65 NONAME
+	pjsip_endpt_destroy                      @ 66 NONAME
+	pjsip_endpt_dump                         @ 67 NONAME
+	pjsip_endpt_get_capability               @ 68 NONAME
+	pjsip_endpt_get_ioqueue                  @ 69 NONAME
+	pjsip_endpt_get_request_headers          @ 70 NONAME
+	pjsip_endpt_get_resolver                 @ 71 NONAME
+	pjsip_endpt_get_timer_heap               @ 72 NONAME
+	pjsip_endpt_get_tpmgr                    @ 73 NONAME
+	pjsip_endpt_handle_events                @ 74 NONAME
+	pjsip_endpt_handle_events2               @ 75 NONAME
+	pjsip_endpt_has_capability               @ 76 NONAME
+	pjsip_endpt_log_error                    @ 77 NONAME
+	pjsip_endpt_name                         @ 78 NONAME
+	pjsip_endpt_register_module              @ 79 NONAME
+	pjsip_endpt_release_pool                 @ 80 NONAME
+	pjsip_endpt_resolve                      @ 81 NONAME
+	pjsip_endpt_respond                      @ 82 NONAME
+	pjsip_endpt_respond_stateless            @ 83 NONAME
+	pjsip_endpt_schedule_timer               @ 84 NONAME
+	pjsip_endpt_send_raw                     @ 85 NONAME
+	pjsip_endpt_send_raw_to_uri              @ 86 NONAME
+	pjsip_endpt_send_request                 @ 87 NONAME
+	pjsip_endpt_send_request_stateless       @ 88 NONAME
+	pjsip_endpt_send_response                @ 89 NONAME
+	pjsip_endpt_send_response2               @ 90 NONAME
+	pjsip_endpt_set_resolver                 @ 91 NONAME
+	pjsip_endpt_unregister_module            @ 92 NONAME
+	pjsip_event_str                          @ 93 NONAME
+	pjsip_expires_hdr_create                 @ 94 NONAME
+	pjsip_expires_hdr_init                   @ 95 NONAME
+	pjsip_find_msg                           @ 96 NONAME
+	pjsip_from_hdr_create                    @ 97 NONAME
+	pjsip_from_hdr_init                      @ 98 NONAME
+	pjsip_fromto_hdr_set_from                @ 99 NONAME
+	pjsip_fromto_hdr_set_to                  @ 100 NONAME
+	pjsip_generic_array_hdr_create           @ 101 NONAME
+	pjsip_generic_array_hdr_init             @ 102 NONAME
+	pjsip_generic_int_hdr_create             @ 103 NONAME
+	pjsip_generic_int_hdr_init               @ 104 NONAME
+	pjsip_generic_string_hdr_create          @ 105 NONAME
+	pjsip_generic_string_hdr_init            @ 106 NONAME
+	pjsip_generic_string_hdr_init2           @ 107 NONAME
+	pjsip_get_ack_method                     @ 108 NONAME
+	pjsip_get_bye_method                     @ 109 NONAME
+	pjsip_get_cancel_method                  @ 110 NONAME
+	pjsip_get_invite_method                  @ 111 NONAME
+	pjsip_get_options_method                 @ 112 NONAME
+	pjsip_get_register_method                @ 113 NONAME
+	pjsip_get_request_dest                   @ 114 NONAME
+	pjsip_get_response_addr                  @ 115 NONAME
+	pjsip_get_status_text                    @ 116 NONAME
+	pjsip_hdr_clone                          @ 117 NONAME
+	pjsip_hdr_print_on                       @ 118 NONAME
+	pjsip_hdr_shallow_clone                  @ 119 NONAME
+	pjsip_invite_method                      @ 120 NONAME
+	pjsip_loop_set_delay                     @ 121 NONAME
+	pjsip_loop_set_discard                   @ 122 NONAME
+	pjsip_loop_set_failure                   @ 123 NONAME
+	pjsip_loop_set_recv_delay                @ 124 NONAME
+	pjsip_loop_set_send_callback_delay       @ 125 NONAME
+	pjsip_loop_start                         @ 126 NONAME
+	pjsip_max_fwd_hdr_create                 @ 127 NONAME
+	pjsip_max_fwd_hdr_init                   @ 128 NONAME
+	pjsip_method_cmp                         @ 129 NONAME
+	pjsip_method_copy                        @ 130 NONAME
+	pjsip_method_creates_dialog              @ 131 NONAME
+	pjsip_method_init                        @ 132 NONAME
+	pjsip_method_init_np                     @ 133 NONAME
+	pjsip_method_set                         @ 134 NONAME
+	pjsip_min_expires_hdr_create             @ 135 NONAME
+	pjsip_min_expires_hdr_init               @ 136 NONAME
+	pjsip_msg_body_clone                     @ 137 NONAME
+	pjsip_msg_body_copy                      @ 138 NONAME
+	pjsip_msg_body_create                    @ 139 NONAME
+	pjsip_msg_clone                          @ 140 NONAME
+	pjsip_msg_create                         @ 141 NONAME
+	pjsip_msg_find_hdr                       @ 142 NONAME
+	pjsip_msg_find_hdr_by_name               @ 143 NONAME
+	pjsip_msg_find_remove_hdr                @ 144 NONAME
+	pjsip_msg_print                          @ 145 NONAME
+	pjsip_name_addr_assign                   @ 146 NONAME
+	pjsip_name_addr_create                   @ 147 NONAME
+	pjsip_name_addr_init                     @ 148 NONAME
+	pjsip_options_method                     @ 149 NONAME
+	pjsip_param_cfind                        @ 150 NONAME
+	pjsip_param_clone                        @ 151 NONAME
+	pjsip_param_find                         @ 152 NONAME
+	pjsip_param_print_on                     @ 153 NONAME
+	pjsip_param_shallow_clone                @ 154 NONAME
+	pjsip_parse_end_hdr_imp                  @ 155 NONAME
+	pjsip_parse_hdr                          @ 156 NONAME
+	pjsip_parse_msg                          @ 157 NONAME
+	pjsip_parse_param_imp                    @ 158 NONAME
+	pjsip_parse_rdata                        @ 159 NONAME
+	pjsip_parse_status_line                  @ 160 NONAME
+	pjsip_parse_uri                          @ 161 NONAME
+	pjsip_parse_uri_param_imp                @ 162 NONAME
+	pjsip_parser_const                       @ 163 NONAME
+	pjsip_print_text_body                    @ 164 NONAME
+	pjsip_process_route_set                  @ 165 NONAME
+	pjsip_proxy_authenticate_hdr_create      @ 166 NONAME
+	pjsip_proxy_authorization_hdr_create     @ 167 NONAME
+	pjsip_rdata_get_dlg                      @ 168 NONAME
+	pjsip_rdata_get_tsx                      @ 169 NONAME
+	pjsip_register_hdr_parser                @ 170 NONAME
+	pjsip_register_method                    @ 171 NONAME
+	pjsip_register_uri_parser                @ 172 NONAME
+	pjsip_require_hdr_create                 @ 173 NONAME
+	pjsip_require_hdr_init                   @ 174 NONAME
+	pjsip_resolve                            @ 175 NONAME
+	pjsip_resolver_create                    @ 176 NONAME
+	pjsip_resolver_destroy                   @ 177 NONAME
+	pjsip_resolver_get_resolver              @ 178 NONAME
+	pjsip_resolver_set_resolver              @ 179 NONAME
+	pjsip_retry_after_hdr_create             @ 180 NONAME
+	pjsip_retry_after_hdr_init               @ 181 NONAME
+	pjsip_role_name                          @ 182 NONAME
+	pjsip_route_hdr_create                   @ 183 NONAME
+	pjsip_route_hdr_init                     @ 184 NONAME
+	pjsip_routing_hdr_set_route              @ 185 NONAME
+	pjsip_routing_hdr_set_rr                 @ 186 NONAME
+	pjsip_rr_hdr_create                      @ 187 NONAME
+	pjsip_rr_hdr_init                        @ 188 NONAME
+	pjsip_rx_data_get_info                   @ 189 NONAME
+	pjsip_sip_uri_assign                     @ 190 NONAME
+	pjsip_sip_uri_create                     @ 191 NONAME
+	pjsip_sip_uri_init                       @ 192 NONAME
+	pjsip_sip_uri_set_secure                 @ 193 NONAME
+	pjsip_strerror                           @ 194 NONAME
+	pjsip_supported_hdr_create               @ 195 NONAME
+	pjsip_supported_hdr_init                 @ 196 NONAME
+	pjsip_tcp_transport_start                @ 197 NONAME
+	pjsip_tcp_transport_start2               @ 198 NONAME
+	pjsip_tel_nb_cmp                         @ 199 NONAME
+	pjsip_tel_uri_create                     @ 200 NONAME
+	pjsip_to_hdr_create                      @ 201 NONAME
+	pjsip_to_hdr_init                        @ 202 NONAME
+	pjsip_tpmgr_acquire_transport            @ 203 NONAME
+	pjsip_tpmgr_create                       @ 204 NONAME
+	pjsip_tpmgr_destroy                      @ 205 NONAME
+	pjsip_tpmgr_dump_transports              @ 206 NONAME
+	pjsip_tpmgr_find_local_addr              @ 207 NONAME
+	pjsip_tpmgr_get_transport_count          @ 208 NONAME
+	pjsip_tpmgr_receive_packet               @ 209 NONAME
+	pjsip_tpmgr_register_tpfactory           @ 210 NONAME
+	pjsip_tpmgr_send_raw                     @ 211 NONAME
+	pjsip_tpmgr_unregister_tpfactory         @ 212 NONAME
+	pjsip_tpselector_add_ref                 @ 213 NONAME
+	pjsip_tpselector_dec_ref                 @ 214 NONAME
+	pjsip_transport_add_ref                  @ 215 NONAME
+	pjsip_transport_dec_ref                  @ 216 NONAME
+	pjsip_transport_destroy                  @ 217 NONAME
+	pjsip_transport_get_default_port_for_type @ 218 NONAME
+	pjsip_transport_get_flag_from_type       @ 219 NONAME
+	pjsip_transport_get_type_from_flag       @ 220 NONAME
+	pjsip_transport_get_type_from_name       @ 221 NONAME
+	pjsip_transport_get_type_name            @ 222 NONAME
+	pjsip_transport_register                 @ 223 NONAME
+	pjsip_transport_register_type            @ 224 NONAME
+	pjsip_transport_send                     @ 225 NONAME
+	pjsip_transport_shutdown                 @ 226 NONAME
+	pjsip_tsx_create_key                     @ 227 NONAME
+	pjsip_tsx_create_uac                     @ 228 NONAME
+	pjsip_tsx_create_uas                     @ 229 NONAME
+	pjsip_tsx_get_dlg                        @ 230 NONAME
+	pjsip_tsx_layer_destroy                  @ 231 NONAME
+	pjsip_tsx_layer_dump                     @ 232 NONAME
+	pjsip_tsx_layer_find_tsx                 @ 233 NONAME
+	pjsip_tsx_layer_init_module              @ 234 NONAME
+	pjsip_tsx_layer_instance                 @ 235 NONAME
+	pjsip_tsx_recv_msg                       @ 236 NONAME
+	pjsip_tsx_send_msg                       @ 237 NONAME
+	pjsip_tsx_set_transport                  @ 238 NONAME
+	pjsip_tsx_state_str                      @ 239 NONAME
+	pjsip_tsx_stop_retransmit                @ 240 NONAME
+	pjsip_tsx_terminate                      @ 241 NONAME
+	pjsip_tx_data_add_ref                    @ 242 NONAME
+	pjsip_tx_data_create                     @ 243 NONAME
+	pjsip_tx_data_dec_ref                    @ 244 NONAME
+	pjsip_tx_data_get_info                   @ 245 NONAME
+	pjsip_tx_data_invalidate_msg             @ 246 NONAME
+	pjsip_tx_data_is_valid                   @ 247 NONAME
+	pjsip_tx_data_set_transport              @ 248 NONAME
+	pjsip_ua_destroy                         @ 249 NONAME
+	pjsip_ua_dump                            @ 250 NONAME
+	pjsip_ua_find_dialog                     @ 251 NONAME
+	pjsip_ua_get_endpt                       @ 252 NONAME
+	pjsip_ua_init_module                     @ 253 NONAME
+	pjsip_ua_instance                        @ 254 NONAME
+	pjsip_ua_register_dlg                    @ 255 NONAME
+	pjsip_ua_unregister_dlg                  @ 256 NONAME
+	pjsip_udp_transport_attach               @ 257 NONAME
+	pjsip_udp_transport_get_socket           @ 258 NONAME
+	pjsip_udp_transport_pause                @ 259 NONAME
+	pjsip_udp_transport_restart              @ 260 NONAME
+	pjsip_udp_transport_start                @ 261 NONAME
+	pjsip_unsupported_hdr_create             @ 262 NONAME
+	pjsip_unsupported_hdr_init               @ 263 NONAME
+	pjsip_via_hdr_create                     @ 264 NONAME
+	pjsip_via_hdr_init                       @ 265 NONAME
+	pjsip_warning_hdr_create                 @ 266 NONAME
+	pjsip_warning_hdr_create_from_status     @ 267 NONAME
+	pjsip_www_authenticate_hdr_create        @ 268 NONAME
Index: pjproject/trunk/build.symbian/pjsip_simple.mmp
===================================================================
--- pjproject/trunk/build.symbian/pjsip_simple.mmp	(revision 1416)
+++ pjproject/trunk/build.symbian/pjsip_simple.mmp	(revision 1417)
@@ -1,6 +1,24 @@
+#if defined(EKA2)
+
+TARGET		pjsip_simple.dll
+TARGETTYPE	dll
+
+UID		0x1000008d 0xA0004292
+
+CAPABILITY	None
+LIBRARY		pjsip.lib pjsdp.lib pjlib_util.lib pjlib.lib esock.lib insock.lib charconv.lib euser.lib estlib.lib
+MACRO		PJ_DLL
+MACRO		PJ_EXPORTING
+
+DEFFILE		.\pjsip_simple.def
+
+#else
+
 TARGET 		pjsip_simple.lib
 TARGETTYPE 	lib
 UID		0x100039CE 0x10004299
 VENDORID	0x70000001
+
+#endif
 
 SOURCEPATH	..\pjsip\src\pjsip-simple
@@ -33,4 +51,2 @@
 SYSTEMINCLUDE	\epoc32\include\libc
 
-CAPABILITY	None
-
Index: pjproject/trunk/build.symbian/pjsip_simpleU.def
===================================================================
--- pjproject/trunk/build.symbian/pjsip_simpleU.def	(revision 1417)
+++ pjproject/trunk/build.symbian/pjsip_simpleU.def	(revision 1417)
@@ -0,0 +1,93 @@
+EXPORTS
+	pjpidf_create                            @ 1 NONAME
+	pjpidf_parse                             @ 2 NONAME
+	pjpidf_pres_add_note                     @ 3 NONAME
+	pjpidf_pres_add_tuple                    @ 4 NONAME
+	pjpidf_pres_construct                    @ 5 NONAME
+	pjpidf_pres_find_tuple                   @ 6 NONAME
+	pjpidf_pres_get_first_note               @ 7 NONAME
+	pjpidf_pres_get_first_tuple              @ 8 NONAME
+	pjpidf_pres_get_next_note                @ 9 NONAME
+	pjpidf_pres_get_next_tuple               @ 10 NONAME
+	pjpidf_pres_remove_tuple                 @ 11 NONAME
+	pjpidf_print                             @ 12 NONAME
+	pjpidf_status_construct                  @ 13 NONAME
+	pjpidf_status_is_basic_open              @ 14 NONAME
+	pjpidf_status_set_basic_open             @ 15 NONAME
+	pjpidf_tuple_add_note                    @ 16 NONAME
+	pjpidf_tuple_construct                   @ 17 NONAME
+	pjpidf_tuple_get_contact                 @ 18 NONAME
+	pjpidf_tuple_get_contact_prio            @ 19 NONAME
+	pjpidf_tuple_get_first_note              @ 20 NONAME
+	pjpidf_tuple_get_id                      @ 21 NONAME
+	pjpidf_tuple_get_next_note               @ 22 NONAME
+	pjpidf_tuple_get_status                  @ 23 NONAME
+	pjpidf_tuple_get_timestamp               @ 24 NONAME
+	pjpidf_tuple_set_contact                 @ 25 NONAME
+	pjpidf_tuple_set_contact_prio            @ 26 NONAME
+	pjpidf_tuple_set_id                      @ 27 NONAME
+	pjpidf_tuple_set_timestamp               @ 28 NONAME
+	pjpidf_tuple_set_timestamp_np            @ 29 NONAME
+	pjsip_allow_events_hdr_create            @ 30 NONAME
+	pjsip_event_hdr_create                   @ 31 NONAME
+	pjsip_evsub_accept                       @ 32 NONAME
+	pjsip_evsub_create_uac                   @ 33 NONAME
+	pjsip_evsub_create_uas                   @ 34 NONAME
+	pjsip_evsub_current_notify               @ 35 NONAME
+	pjsip_evsub_get_allow_events_hdr         @ 36 NONAME
+	pjsip_evsub_get_mod_data                 @ 37 NONAME
+	pjsip_evsub_get_state                    @ 38 NONAME
+	pjsip_evsub_get_state_name               @ 39 NONAME
+	pjsip_evsub_init_module                  @ 40 NONAME
+	pjsip_evsub_init_parser                  @ 41 NONAME
+	pjsip_evsub_initiate                     @ 42 NONAME
+	pjsip_evsub_instance                     @ 43 NONAME
+	pjsip_evsub_notify                       @ 44 NONAME
+	pjsip_evsub_register_pkg                 @ 45 NONAME
+	pjsip_evsub_send_request                 @ 46 NONAME
+	pjsip_evsub_set_mod_data                 @ 47 NONAME
+	pjsip_evsub_terminate                    @ 48 NONAME
+	pjsip_get_notify_method                  @ 49 NONAME
+	pjsip_get_subscribe_method               @ 50 NONAME
+	pjsip_iscomposing_create_body            @ 51 NONAME
+	pjsip_iscomposing_create_xml             @ 52 NONAME
+	pjsip_iscomposing_parse                  @ 53 NONAME
+	pjsip_notify_method                      @ 54 NONAME
+	pjsip_pres_accept                        @ 55 NONAME
+	pjsip_pres_create_pidf                   @ 56 NONAME
+	pjsip_pres_create_uac                    @ 57 NONAME
+	pjsip_pres_create_uas                    @ 58 NONAME
+	pjsip_pres_create_xpidf                  @ 59 NONAME
+	pjsip_pres_current_notify                @ 60 NONAME
+	pjsip_pres_get_status                    @ 61 NONAME
+	pjsip_pres_init_module                   @ 62 NONAME
+	pjsip_pres_initiate                      @ 63 NONAME
+	pjsip_pres_instance                      @ 64 NONAME
+	pjsip_pres_notify                        @ 65 NONAME
+	pjsip_pres_parse_pidf                    @ 66 NONAME
+	pjsip_pres_parse_xpidf                   @ 67 NONAME
+	pjsip_pres_send_request                  @ 68 NONAME
+	pjsip_pres_set_status                    @ 69 NONAME
+	pjsip_pres_terminate                     @ 70 NONAME
+	pjsip_publishc_create                    @ 71 NONAME
+	pjsip_publishc_destroy                   @ 72 NONAME
+	pjsip_publishc_get_pool                  @ 73 NONAME
+	pjsip_publishc_init                      @ 74 NONAME
+	pjsip_publishc_init_module               @ 75 NONAME
+	pjsip_publishc_publish                   @ 76 NONAME
+	pjsip_publishc_send                      @ 77 NONAME
+	pjsip_publishc_set_credentials           @ 78 NONAME
+	pjsip_publishc_set_route_set             @ 79 NONAME
+	pjsip_publishc_unpublish                 @ 80 NONAME
+	pjsip_publishc_update_expires            @ 81 NONAME
+	pjsip_sub_state_hdr_create               @ 82 NONAME
+	pjsip_subscribe_method                   @ 83 NONAME
+	pjsip_tsx_get_evsub                      @ 84 NONAME
+	pjsipsimple_strerror                     @ 85 NONAME
+	pjxpidf_create                           @ 86 NONAME
+	pjxpidf_get_status                       @ 87 NONAME
+	pjxpidf_get_uri                          @ 88 NONAME
+	pjxpidf_parse                            @ 89 NONAME
+	pjxpidf_print                            @ 90 NONAME
+	pjxpidf_set_status                       @ 91 NONAME
+	pjxpidf_set_uri                          @ 92 NONAME
Index: pjproject/trunk/build.symbian/pjsip_ua.mmp
===================================================================
--- pjproject/trunk/build.symbian/pjsip_ua.mmp	(revision 1416)
+++ pjproject/trunk/build.symbian/pjsip_ua.mmp	(revision 1417)
@@ -1,6 +1,24 @@
+#if defined(EKA2)
+
+TARGET		pjsip_ua.dll
+TARGETTYPE	dll
+
+UID		0x1000008d 0xA0004291
+
+CAPABILITY	None
+LIBRARY		pjsip_simple.lib pjsip.lib pjsdp.lib pjlib_util.lib pjlib.lib esock.lib insock.lib charconv.lib euser.lib estlib.lib
+MACRO		PJ_DLL
+MACRO		PJ_EXPORTING
+
+DEFFILE		.\pjsip_ua.def
+
+#else
+
 TARGET 		pjsip_ua.lib
 TARGETTYPE 	lib
 UID		0x100039CE 0x10004299
 VENDORID	0x70000001
+
+#endif
 
 SOURCEPATH	..\pjsip\src\pjsip-ua
@@ -27,4 +45,3 @@
 SYSTEMINCLUDE	\epoc32\include\libc
 
-CAPABILITY	None
 
Index: pjproject/trunk/build.symbian/pjsip_uaU.def
===================================================================
--- pjproject/trunk/build.symbian/pjsip_uaU.def	(revision 1417)
+++ pjproject/trunk/build.symbian/pjsip_uaU.def	(revision 1417)
@@ -0,0 +1,46 @@
+EXPORTS
+	pjsip_create_sdp_body                    @ 1 NONAME
+	pjsip_dlg_get_inv_session                @ 2 NONAME
+	pjsip_get_refer_method                   @ 3 NONAME
+	pjsip_inv_answer                         @ 4 NONAME
+	pjsip_inv_create_uac                     @ 5 NONAME
+	pjsip_inv_create_uas                     @ 6 NONAME
+	pjsip_inv_end_session                    @ 7 NONAME
+	pjsip_inv_initial_answer                 @ 8 NONAME
+	pjsip_inv_invite                         @ 9 NONAME
+	pjsip_inv_reinvite                       @ 10 NONAME
+	pjsip_inv_send_msg                       @ 11 NONAME
+	pjsip_inv_set_sdp_answer                 @ 12 NONAME
+	pjsip_inv_state_name                     @ 13 NONAME
+	pjsip_inv_terminate                      @ 14 NONAME
+	pjsip_inv_update                         @ 15 NONAME
+	pjsip_inv_usage_init                     @ 16 NONAME
+	pjsip_inv_usage_instance                 @ 17 NONAME
+	pjsip_inv_verify_request                 @ 18 NONAME
+	pjsip_refer_method                       @ 19 NONAME
+	pjsip_regc_add_headers                   @ 20 NONAME
+	pjsip_regc_create                        @ 21 NONAME
+	pjsip_regc_destroy                       @ 22 NONAME
+	pjsip_regc_get_info                      @ 23 NONAME
+	pjsip_regc_get_pool                      @ 24 NONAME
+	pjsip_regc_init                          @ 25 NONAME
+	pjsip_regc_register                      @ 26 NONAME
+	pjsip_regc_send                          @ 27 NONAME
+	pjsip_regc_set_credentials               @ 28 NONAME
+	pjsip_regc_set_route_set                 @ 29 NONAME
+	pjsip_regc_set_transport                 @ 30 NONAME
+	pjsip_regc_unregister                    @ 31 NONAME
+	pjsip_regc_unregister_all                @ 32 NONAME
+	pjsip_regc_update_contact                @ 33 NONAME
+	pjsip_regc_update_expires                @ 34 NONAME
+	pjsip_replaces_hdr_create                @ 35 NONAME
+	pjsip_replaces_init_module               @ 36 NONAME
+	pjsip_replaces_verify_request            @ 37 NONAME
+	pjsip_xfer_accept                        @ 38 NONAME
+	pjsip_xfer_create_uac                    @ 39 NONAME
+	pjsip_xfer_create_uas                    @ 40 NONAME
+	pjsip_xfer_current_notify                @ 41 NONAME
+	pjsip_xfer_init_module                   @ 42 NONAME
+	pjsip_xfer_initiate                      @ 43 NONAME
+	pjsip_xfer_notify                        @ 44 NONAME
+	pjsip_xfer_send_request                  @ 45 NONAME
Index: pjproject/trunk/build.symbian/pjsua_lib.mmp
===================================================================
--- pjproject/trunk/build.symbian/pjsua_lib.mmp	(revision 1416)
+++ pjproject/trunk/build.symbian/pjsua_lib.mmp	(revision 1417)
@@ -1,6 +1,24 @@
+#if defined(EKA2)
+
+TARGET		pjsua_lib.dll
+TARGETTYPE	dll
+
+UID		0x1000008d 0xA0004290
+
+CAPABILITY	None
+LIBRARY		pjsip_ua.lib pjsip_simple.lib pjsip.lib pjmedia.lib null_audio.lib pjsdp.lib pjnath.lib pjlib_util.lib pjlib.lib esock.lib insock.lib charconv.lib euser.lib estlib.lib
+MACRO		PJ_DLL
+MACRO		PJ_EXPORTING
+
+DEFFILE		.\pjsua_lib.def
+
+#else
+
 TARGET 		pjsua_lib.lib
 TARGETTYPE 	lib
 UID		0x100039CE 0x10004299
 VENDORID	0x70000001
+
+#endif
 
 SOURCEPATH	..\pjsip\src\pjsua-lib
@@ -29,4 +47,3 @@
 SYSTEMINCLUDE	\epoc32\include\libc
 
-CAPABILITY	None
 
Index: pjproject/trunk/build.symbian/pjsua_libU.def
===================================================================
--- pjproject/trunk/build.symbian/pjsua_libU.def	(revision 1417)
+++ pjproject/trunk/build.symbian/pjsua_libU.def	(revision 1417)
@@ -0,0 +1,114 @@
+EXPORTS
+	pjsip_cred_dup                           @ 1 NONAME
+	pjsua_acc_add                            @ 2 NONAME
+	pjsua_acc_add_local                      @ 3 NONAME
+	pjsua_acc_config_default                 @ 4 NONAME
+	pjsua_acc_create_request                 @ 5 NONAME
+	pjsua_acc_create_uac_contact             @ 6 NONAME
+	pjsua_acc_create_uas_contact             @ 7 NONAME
+	pjsua_acc_del                            @ 8 NONAME
+	pjsua_acc_enum_info                      @ 9 NONAME
+	pjsua_acc_find_for_incoming              @ 10 NONAME
+	pjsua_acc_find_for_outgoing              @ 11 NONAME
+	pjsua_acc_get_count                      @ 12 NONAME
+	pjsua_acc_get_default                    @ 13 NONAME
+	pjsua_acc_get_info                       @ 14 NONAME
+	pjsua_acc_is_valid                       @ 15 NONAME
+	pjsua_acc_modify                         @ 16 NONAME
+	pjsua_acc_set_default                    @ 17 NONAME
+	pjsua_acc_set_online_status              @ 18 NONAME
+	pjsua_acc_set_registration               @ 19 NONAME
+	pjsua_acc_set_transport                  @ 20 NONAME
+	pjsua_buddy_add                          @ 21 NONAME
+	pjsua_buddy_config_default               @ 22 NONAME
+	pjsua_buddy_del                          @ 23 NONAME
+	pjsua_buddy_get_info                     @ 24 NONAME
+	pjsua_buddy_is_valid                     @ 25 NONAME
+	pjsua_buddy_subscribe_pres               @ 26 NONAME
+	pjsua_call_answer                        @ 27 NONAME
+	pjsua_call_dial_dtmf                     @ 28 NONAME
+	pjsua_call_dump                          @ 29 NONAME
+	pjsua_call_get_conf_port                 @ 30 NONAME
+	pjsua_call_get_count                     @ 31 NONAME
+	pjsua_call_get_info                      @ 32 NONAME
+	pjsua_call_get_max_count                 @ 33 NONAME
+	pjsua_call_get_user_data                 @ 34 NONAME
+	pjsua_call_hangup                        @ 35 NONAME
+	pjsua_call_hangup_all                    @ 36 NONAME
+	pjsua_call_has_media                     @ 37 NONAME
+	pjsua_call_is_active                     @ 38 NONAME
+	pjsua_call_make_call                     @ 39 NONAME
+	pjsua_call_reinvite                      @ 40 NONAME
+	pjsua_call_send_im                       @ 41 NONAME
+	pjsua_call_send_typing_ind               @ 42 NONAME
+	pjsua_call_set_hold                      @ 43 NONAME
+	pjsua_call_set_user_data                 @ 44 NONAME
+	pjsua_call_xfer                          @ 45 NONAME
+	pjsua_call_xfer_replaces                 @ 46 NONAME
+	pjsua_codec_get_param                    @ 47 NONAME
+	pjsua_codec_set_param                    @ 48 NONAME
+	pjsua_codec_set_priority                 @ 49 NONAME
+	pjsua_conf_add_port                      @ 50 NONAME
+	pjsua_conf_adjust_rx_level               @ 51 NONAME
+	pjsua_conf_adjust_tx_level               @ 52 NONAME
+	pjsua_conf_connect                       @ 53 NONAME
+	pjsua_conf_disconnect                    @ 54 NONAME
+	pjsua_conf_get_active_ports              @ 55 NONAME
+	pjsua_conf_get_max_ports                 @ 56 NONAME
+	pjsua_conf_get_port_info                 @ 57 NONAME
+	pjsua_conf_get_signal_level              @ 58 NONAME
+	pjsua_conf_remove_port                   @ 59 NONAME
+	pjsua_config_default                     @ 60 NONAME
+	pjsua_config_dup                         @ 61 NONAME
+	pjsua_create                             @ 62 NONAME
+	pjsua_destroy                            @ 63 NONAME
+	pjsua_dump                               @ 64 NONAME
+	pjsua_enum_accs                          @ 65 NONAME
+	pjsua_enum_buddies                       @ 66 NONAME
+	pjsua_enum_calls                         @ 67 NONAME
+	pjsua_enum_codecs                        @ 68 NONAME
+	pjsua_enum_conf_ports                    @ 69 NONAME
+	pjsua_enum_snd_devs                      @ 70 NONAME
+	pjsua_enum_transports                    @ 71 NONAME
+	pjsua_get_buddy_count                    @ 72 NONAME
+	pjsua_get_ec_tail                        @ 73 NONAME
+	pjsua_get_pjmedia_endpt                  @ 74 NONAME
+	pjsua_get_pjsip_endpt                    @ 75 NONAME
+	pjsua_get_pool_factory                   @ 76 NONAME
+	pjsua_get_snd_dev                        @ 77 NONAME
+	pjsua_handle_events                      @ 78 NONAME
+	pjsua_im_send                            @ 79 NONAME
+	pjsua_im_typing                          @ 80 NONAME
+	pjsua_init                               @ 81 NONAME
+	pjsua_logging_config_default             @ 82 NONAME
+	pjsua_logging_config_dup                 @ 83 NONAME
+	pjsua_media_config_default               @ 84 NONAME
+	pjsua_media_transports_create            @ 85 NONAME
+	pjsua_msg_data_init                      @ 86 NONAME
+	pjsua_perror                             @ 87 NONAME
+	pjsua_player_create                      @ 88 NONAME
+	pjsua_player_destroy                     @ 89 NONAME
+	pjsua_player_get_conf_port               @ 90 NONAME
+	pjsua_player_get_port                    @ 91 NONAME
+	pjsua_player_set_pos                     @ 92 NONAME
+	pjsua_playlist_create                    @ 93 NONAME
+	pjsua_pool_create                        @ 94 NONAME
+	pjsua_pres_dump                          @ 95 NONAME
+	pjsua_reconfigure_logging                @ 96 NONAME
+	pjsua_recorder_create                    @ 97 NONAME
+	pjsua_recorder_destroy                   @ 98 NONAME
+	pjsua_recorder_get_conf_port             @ 99 NONAME
+	pjsua_recorder_get_port                  @ 100 NONAME
+	pjsua_set_ec                             @ 101 NONAME
+	pjsua_set_no_snd_dev                     @ 102 NONAME
+	pjsua_set_null_snd_dev                   @ 103 NONAME
+	pjsua_set_snd_dev                        @ 104 NONAME
+	pjsua_start                              @ 105 NONAME
+	pjsua_transport_close                    @ 106 NONAME
+	pjsua_transport_config_default           @ 107 NONAME
+	pjsua_transport_config_dup               @ 108 NONAME
+	pjsua_transport_create                   @ 109 NONAME
+	pjsua_transport_get_info                 @ 110 NONAME
+	pjsua_transport_register                 @ 111 NONAME
+	pjsua_transport_set_enable               @ 112 NONAME
+	pjsua_verify_sip_url                     @ 113 NONAME
Index: pjproject/trunk/build.symbian/symbian_ua.mmp
===================================================================
--- pjproject/trunk/build.symbian/symbian_ua.mmp	(revision 1416)
+++ pjproject/trunk/build.symbian/symbian_ua.mmp	(revision 1417)
@@ -8,4 +8,5 @@
 MACRO		PJ_M_I386=1
 MACRO		PJ_SYMBIAN=1
+MACRO		PJ_DLL=1
 
 // Test files
@@ -26,5 +27,5 @@
 
 LIBRARY		esock.lib insock.lib charconv.lib euser.lib estlib.lib eexe.lib
-STATICLIBRARY   null_audio.lib pjsua_lib.lib pjsip_ua.lib pjsip_simple.lib pjsip.lib pjsdp.lib pjmedia.lib pjnath.lib pjlib_util.lib pjlib.lib ecrt0.lib
+LIBRARY		null_audio.lib pjsua_lib.lib pjsip_ua.lib pjsip_simple.lib pjsip.lib pjsdp.lib pjmedia.lib pjnath.lib pjlib_util.lib pjlib.lib ecrt0.lib
 CAPABILITY	None
 
Index: pjproject/trunk/pjlib/include/pj/guid.h
===================================================================
--- pjproject/trunk/pjlib/include/pj/guid.h	(revision 1416)
+++ pjproject/trunk/pjlib/include/pj/guid.h	(revision 1417)
@@ -56,6 +56,14 @@
  * Regardless of the actual length of the GUID, it will not exceed
  * PJ_GUID_MAX_LENGTH characters.
+ *
+ * @see pj_GUID_STRING_LENGTH()
+ * @see PJ_GUID_MAX_LENGTH
  */
-extern const unsigned PJ_GUID_STRING_LENGTH;
+PJ_DECL_DATA(const unsigned) PJ_GUID_STRING_LENGTH;
+
+/**
+ * Get #PJ_GUID_STRING_LENGTH constant.
+ */
+PJ_DECL(unsigned) pj_GUID_STRING_LENGTH();
 
 /**
Index: pjproject/trunk/pjlib/include/pj/pool.h
===================================================================
--- pjproject/trunk/pjlib/include/pj/pool.h	(revision 1416)
+++ pjproject/trunk/pjlib/include/pj/pool.h	(revision 1417)
@@ -615,6 +615,13 @@
  * This constant denotes the exception number that will be thrown by default
  * memory factory policy when memory allocation fails.
- */
-extern int PJ_NO_MEMORY_EXCEPTION;
+ *
+ * @see pj_NO_MEMORY_EXCEPTION()
+ */
+PJ_DECL_DATA(int) PJ_NO_MEMORY_EXCEPTION;
+
+/**
+ * Get #PJ_NO_MEMORY_EXCEPTION constant.
+ */ 
+PJ_DECL(int) pj_NO_MEMORY_EXCEPTION();
 
 /**
Index: pjproject/trunk/pjlib/src/pj/guid_simple.c
===================================================================
--- pjproject/trunk/pjlib/src/pj/guid_simple.c	(revision 1416)
+++ pjproject/trunk/pjlib/src/pj/guid_simple.c	(revision 1417)
@@ -22,5 +22,10 @@
 #include <pj/string.h>
 
-const unsigned PJ_GUID_STRING_LENGTH=20;
+PJ_DEF_DATA(const unsigned) PJ_GUID_STRING_LENGTH=20;
+
+PJ_DEF(unsigned) pj_GUID_STRING_LENGTH()
+{
+    return PJ_GUID_STRING_LENGTH;
+}
 
 static void init_mac_address(unsigned char mac_addr[16])
Index: pjproject/trunk/pjlib/src/pj/guid_uuid.c
===================================================================
--- pjproject/trunk/pjlib/src/pj/guid_uuid.c	(revision 1416)
+++ pjproject/trunk/pjlib/src/pj/guid_uuid.c	(revision 1417)
@@ -25,5 +25,10 @@
 #include <uuid/uuid.h>
 
-const unsigned PJ_GUID_STRING_LENGTH=36;
+PJ_DEF_DATA(const unsigned) PJ_GUID_STRING_LENGTH=36;
+
+PJ_DEF(unsigned) pj_GUID_STRING_LENGTH()
+{
+    return PJ_GUID_STRING_LENGTH;
+}
 
 PJ_DEF(pj_str_t*) pj_generate_unique_string(pj_str_t *str)
Index: pjproject/trunk/pjlib/src/pj/guid_win32.c
===================================================================
--- pjproject/trunk/pjlib/src/pj/guid_win32.c	(revision 1416)
+++ pjproject/trunk/pjlib/src/pj/guid_win32.c	(revision 1417)
@@ -25,5 +25,10 @@
 
 
-const unsigned PJ_GUID_STRING_LENGTH=32;
+PJ_DEF_DATA(const unsigned) PJ_GUID_STRING_LENGTH=32;
+
+PJ_DEF(unsigned) pj_GUID_STRING_LENGTH()
+{
+    return PJ_GUID_STRING_LENGTH;
+}
 
 PJ_INLINE(void) hex2digit(unsigned value, char *p)
Index: pjproject/trunk/pjlib/src/pj/os_symbian.h
===================================================================
--- pjproject/trunk/pjlib/src/pj/os_symbian.h	(revision 1416)
+++ pjproject/trunk/pjlib/src/pj/os_symbian.h	(revision 1417)
@@ -26,7 +26,7 @@
 #include <e32cmn.h>
 #include <e32std.h>
-#include <ES_SOCK.H>
+#include <es_sock.h>
 #include <in_sock.h>
-#include <CHARCONV.H>
+#include <charconf.h>
 #include <utf.h>
 #include <e32cons.h>
Index: pjproject/trunk/pjlib/src/pj/pool.c
===================================================================
--- pjproject/trunk/pjlib/src/pj/pool.c	(revision 1416)
+++ pjproject/trunk/pjlib/src/pj/pool.c	(revision 1417)
@@ -33,5 +33,10 @@
 #define LOG(expr)   PJ_LOG(6,expr)
 
-int PJ_NO_MEMORY_EXCEPTION;
+PJ_DEF_DATA(int) PJ_NO_MEMORY_EXCEPTION;
+
+PJ_DEF(int) pj_NO_MEMORY_EXCEPTION()
+{
+    return PJ_NO_MEMORY_EXCEPTION;
+}
 
 /*
Index: pjproject/trunk/pjmedia/include/pjmedia/errno.h
===================================================================
--- pjproject/trunk/pjmedia/include/pjmedia/errno.h	(revision 1416)
+++ pjproject/trunk/pjmedia/include/pjmedia/errno.h	(revision 1417)
@@ -522,4 +522,21 @@
 
 
+/**
+ * Get error message for the specified error code. Note that this
+ * function is only able to decode PJMEDIA specific error code.
+ * Application should use pj_strerror(), which should be able to
+ * decode all error codes belonging to all subsystems (e.g. pjlib,
+ * pjmedia, pjsip, etc).
+ *
+ * @param status    The error code.
+ * @param buffer    The buffer where to put the error message.
+ * @param bufsize   Size of the buffer.
+ *
+ * @return	    The error message as NULL terminated string,
+ *                  wrapped with pj_str_t.
+ */
+PJ_DECL(pj_str_t) pjmedia_strerror( pj_status_t status, char *buffer,
+				    pj_size_t bufsize);
+
 
 PJ_END_DECL
Index: pjproject/trunk/pjmedia/include/pjmedia/rtcp.h
===================================================================
--- pjproject/trunk/pjmedia/include/pjmedia/rtcp.h	(revision 1416)
+++ pjproject/trunk/pjmedia/include/pjmedia/rtcp.h	(revision 1417)
@@ -310,6 +310,6 @@
  * @return		    PJ_SUCCESS on success.
  */
-PJ_DEF(pj_status_t) pjmedia_rtcp_get_ntp_time(const pjmedia_rtcp_session *sess,
-					      pjmedia_rtcp_ntp_rec *ntp);
+PJ_DECL(pj_status_t) pjmedia_rtcp_get_ntp_time(const pjmedia_rtcp_session *sess,
+					       pjmedia_rtcp_ntp_rec *ntp);
 
 
Index: pjproject/trunk/pjmedia/src/pjmedia/alaw_ulaw.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/alaw_ulaw.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/alaw_ulaw.c	(revision 1417)
@@ -117,6 +117,5 @@
  * John Wiley & Sons, pps 98-111 and 472-476.
  */
-PJ_DEF(pj_uint8_t)
-pjmedia_linear2alaw(
+PJ_DEF(pj_uint8_t) pjmedia_linear2alaw(
 	int		pcm_val)	/* 2's complement (16-bit range) */
 {
@@ -153,6 +152,5 @@
  *
  */
-PJ_DEF(int)
-pjmedia_alaw2linear(
+PJ_DEF(int) pjmedia_alaw2linear(
 	unsigned a_val)
 {
@@ -209,6 +207,5 @@
  * John Wiley & Sons, pps 98-111 and 472-476.
  */
-PJ_DECL(unsigned char)
-pjmedia_linear2ulaw(
+PJ_DEF(unsigned char) pjmedia_linear2ulaw(
 	int		pcm_val)	/* 2's complement (16-bit range) */
 {
@@ -251,6 +248,5 @@
  * original code word. This is in keeping with ISDN conventions.
  */
-PJ_DEF(int)
-pjmedia_ulaw2linear(
+PJ_DEF(int) pjmedia_ulaw2linear(
 	unsigned char	u_val)
 {
@@ -277,6 +273,5 @@
 
 /* A-law to u-law conversion */
-PJ_DEF(unsigned char)
-pjmedia_alaw2ulaw(
+PJ_DEF(unsigned char) pjmedia_alaw2ulaw(
 	unsigned char	aval)
 {
@@ -287,6 +282,5 @@
 
 /* u-law to A-law conversion */
-PJ_DEF(unsigned char)
-pjmedia_ulaw2alaw(
+PJ_DEF(unsigned char) pjmedia_ulaw2alaw(
 	unsigned char	uval)
 {
Index: pjproject/trunk/pjmedia/src/pjmedia/codec.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/codec.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/codec.c	(revision 1417)
@@ -51,6 +51,5 @@
  * Register a codec factory.
  */
-PJ_DEF(pj_status_t) 
-pjmedia_codec_mgr_register_factory( pjmedia_codec_mgr *mgr,
+PJ_DEF(pj_status_t) pjmedia_codec_mgr_register_factory( pjmedia_codec_mgr *mgr,
 				    pjmedia_codec_factory *factory)
 {
@@ -101,7 +100,7 @@
  * Unregister a codec factory.
  */
-PJ_DEF(pj_status_t) 
-pjmedia_codec_mgr_unregister_factory(pjmedia_codec_mgr *mgr, 
-				     pjmedia_codec_factory *factory)
+PJ_DEF(pj_status_t) pjmedia_codec_mgr_unregister_factory(
+				pjmedia_codec_mgr *mgr, 
+				pjmedia_codec_factory *factory)
 {
     unsigned i;
@@ -140,6 +139,5 @@
  * Enum all codecs.
  */
-PJ_DEF(pj_status_t)
-pjmedia_codec_mgr_enum_codecs(pjmedia_codec_mgr *mgr, 
+PJ_DEF(pj_status_t) pjmedia_codec_mgr_enum_codecs(pjmedia_codec_mgr *mgr, 
 			      unsigned *count, 
 			      pjmedia_codec_info codecs[],
@@ -171,6 +169,5 @@
  * Get codec info for static payload type.
  */
-PJ_DEF(pj_status_t) 
-pjmedia_codec_mgr_get_codec_info( pjmedia_codec_mgr *mgr,
+PJ_DEF(pj_status_t) pjmedia_codec_mgr_get_codec_info( pjmedia_codec_mgr *mgr,
 				  unsigned pt,
 				  const pjmedia_codec_info **p_info)
@@ -223,6 +220,5 @@
  * and so on, up to the maximum count specified in the argument.
  */
-PJ_DEF(pj_status_t) 
-pjmedia_codec_mgr_find_codecs_by_id( pjmedia_codec_mgr *mgr,
+PJ_DEF(pj_status_t) pjmedia_codec_mgr_find_codecs_by_id( pjmedia_codec_mgr *mgr,
 				     const pj_str_t *codec_id,
 				     unsigned *count,
@@ -307,8 +303,8 @@
  * priorities of all those codecs.
  */
-PJ_DEF(pj_status_t)
-pjmedia_codec_mgr_set_codec_priority(pjmedia_codec_mgr *mgr, 
-				     const pj_str_t *codec_id,
-				     pj_uint8_t prio)
+PJ_DEF(pj_status_t) pjmedia_codec_mgr_set_codec_priority(
+				pjmedia_codec_mgr *mgr, 
+				const pj_str_t *codec_id,
+				pj_uint8_t prio)
 {
     unsigned i, found = 0;
Index: pjproject/trunk/pjmedia/src/pjmedia/conference.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/conference.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/conference.c	(revision 1417)
@@ -819,5 +819,5 @@
  * Change TX and RX settings for the port.
  */
-PJ_DECL(pj_status_t) pjmedia_conf_configure_port( pjmedia_conf *conf,
+PJ_DEF(pj_status_t) pjmedia_conf_configure_port( pjmedia_conf *conf,
 						  unsigned slot,
 						  pjmedia_port_op tx,
@@ -980,5 +980,5 @@
  * Get total number of ports connections currently set up in the bridge.
  */
-PJ_DECL(unsigned) pjmedia_conf_get_connect_count(pjmedia_conf *conf)
+PJ_DEF(unsigned) pjmedia_conf_get_connect_count(pjmedia_conf *conf)
 {
     return conf->connect_cnt;
Index: pjproject/trunk/pjmedia/src/pjmedia/echo_common.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/echo_common.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/echo_common.c	(revision 1417)
@@ -22,5 +22,5 @@
 #include <pj/assert.h>
 #include <pj/pool.h>
-
+#include "echo_internal.h"
 
 typedef struct ec_operations ec_operations;
@@ -56,27 +56,4 @@
 
 
-
-/*
- * Simple echo suppressor
- */
-PJ_DECL(pj_status_t) echo_supp_create(pj_pool_t *pool,
-				      unsigned clock_rate,
-				      unsigned samples_per_frame,
-				      unsigned tail_ms,
-				      unsigned latency_ms,
-				      unsigned options,
-				      void **p_state );
-PJ_DECL(pj_status_t) echo_supp_destroy(void *state);
-PJ_DECL(pj_status_t) echo_supp_playback(void *state,
-					pj_int16_t *play_frm );
-PJ_DECL(pj_status_t) echo_supp_capture(void *state,
-				       pj_int16_t *rec_frm,
-				       unsigned options );
-PJ_DECL(pj_status_t) echo_supp_cancel_echo(void *state,
-					   pj_int16_t *rec_frm,
-					   const pj_int16_t *play_frm,
-					   unsigned options,
-					   void *reserved );
-
 static struct ec_operations echo_supp_op = 
 {
@@ -94,23 +71,4 @@
  */
 #if defined(PJMEDIA_HAS_SPEEX_AEC) && PJMEDIA_HAS_SPEEX_AEC!=0
-PJ_DECL(pj_status_t) speex_aec_create(pj_pool_t *pool,
-				      unsigned clock_rate,
-				      unsigned samples_per_frame,
-				      unsigned tail_ms,
-				      unsigned latency_ms,
-				      unsigned options,
-				      void **p_state );
-PJ_DECL(pj_status_t) speex_aec_destroy(void *state );
-PJ_DECL(pj_status_t) speex_aec_playback(void *state,
-				        pj_int16_t *play_frm );
-PJ_DECL(pj_status_t) speex_aec_capture(void *state,
-				       pj_int16_t *rec_frm,
-				       unsigned options );
-PJ_DECL(pj_status_t) speex_aec_cancel_echo(void *state,
-					   pj_int16_t *rec_frm,
-					   const pj_int16_t *play_frm,
-					   unsigned options,
-					   void *reserved );
-
 static struct ec_operations aec_op = 
 {
Index: pjproject/trunk/pjmedia/src/pjmedia/echo_internal.h
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/echo_internal.h	(revision 1417)
+++ pjproject/trunk/pjmedia/src/pjmedia/echo_internal.h	(revision 1417)
@@ -0,0 +1,71 @@
+/* $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 __PJMEDIA_ECHO_INTERNAL_H__
+#define __PJMEDIA_ECHO_INTERNAL_H__
+
+#include <pjmedia/types.h>
+
+PJ_BEGIN_DECL
+
+/*
+ * Simple echo suppressor
+ */
+PJ_DECL(pj_status_t) echo_supp_create(pj_pool_t *pool,
+				      unsigned clock_rate,
+				      unsigned samples_per_frame,
+				      unsigned tail_ms,
+				      unsigned latency_ms,
+				      unsigned options,
+				      void **p_state );
+PJ_DECL(pj_status_t) echo_supp_destroy(void *state);
+PJ_DECL(pj_status_t) echo_supp_playback(void *state,
+					pj_int16_t *play_frm );
+PJ_DECL(pj_status_t) echo_supp_capture(void *state,
+				       pj_int16_t *rec_frm,
+				       unsigned options );
+PJ_DECL(pj_status_t) echo_supp_cancel_echo(void *state,
+					   pj_int16_t *rec_frm,
+					   const pj_int16_t *play_frm,
+					   unsigned options,
+					   void *reserved );
+
+PJ_DECL(pj_status_t) speex_aec_create(pj_pool_t *pool,
+				      unsigned clock_rate,
+				      unsigned samples_per_frame,
+				      unsigned tail_ms,
+				      unsigned latency_ms,
+				      unsigned options,
+				      void **p_state );
+PJ_DECL(pj_status_t) speex_aec_destroy(void *state );
+PJ_DECL(pj_status_t) speex_aec_playback(void *state,
+				        pj_int16_t *play_frm );
+PJ_DECL(pj_status_t) speex_aec_capture(void *state,
+				       pj_int16_t *rec_frm,
+				       unsigned options );
+PJ_DECL(pj_status_t) speex_aec_cancel_echo(void *state,
+					   pj_int16_t *rec_frm,
+					   const pj_int16_t *play_frm,
+					   unsigned options,
+					   void *reserved );
+
+
+PJ_END_DECL
+
+#endif
+
Index: pjproject/trunk/pjmedia/src/pjmedia/echo_speex.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/echo_speex.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/echo_speex.c	(revision 1417)
@@ -29,4 +29,5 @@
 #include <speex/speex_preprocess.h>
 
+#include "echo_internal.h"
 
 #define THIS_FILE	"echo_speex.c"
@@ -226,27 +227,4 @@
     return PJ_SUCCESS;
 }
-
-/*
- * Prototypes
- */
-PJ_DECL(pj_status_t) speex_aec_create(pj_pool_t *pool,
-				      unsigned clock_rate,
-				      unsigned samples_per_frame,
-				      unsigned tail_ms,
-				      unsigned latency_ms,
-				      unsigned options,
-				      void **p_state );
-PJ_DECL(pj_status_t) speex_aec_destroy(void *state );
-PJ_DECL(pj_status_t) speex_aec_playback(void *state,
-				        pj_int16_t *play_frm );
-PJ_DECL(pj_status_t) speex_aec_capture(void *state,
-				       pj_int16_t *rec_frm,
-				       unsigned options );
-PJ_DECL(pj_status_t) speex_aec_cancel_echo(void *state,
-					   pj_int16_t *rec_frm,
-					   const pj_int16_t *play_frm,
-					   unsigned options,
-					   void *reserved );
-
 
 enum
Index: pjproject/trunk/pjmedia/src/pjmedia/echo_suppress.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/echo_suppress.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/echo_suppress.c	(revision 1417)
@@ -26,4 +26,5 @@
 #include <pj/pool.h>
 
+#include "echo_internal.h"
 
 #define THIS_FILE			    "echo_suppress.c"
@@ -41,28 +42,4 @@
     unsigned		 tail_ms;
 } echo_supp;
-
-
-
-/*
- * Prototypes.
- */
-PJ_DECL(pj_status_t) echo_supp_create(pj_pool_t *pool,
-				      unsigned clock_rate,
-				      unsigned samples_per_frame,
-				      unsigned tail_ms,
-				      unsigned latency_ms,
-				      unsigned options,
-				      void **p_state );
-PJ_DECL(pj_status_t) echo_supp_destroy(void *state);
-PJ_DECL(pj_status_t) echo_supp_playback(void *state,
-					pj_int16_t *play_frm );
-PJ_DECL(pj_status_t) echo_supp_capture(void *state,
-				       pj_int16_t *rec_frm,
-				       unsigned options );
-PJ_DECL(pj_status_t) echo_supp_cancel_echo(void *state,
-					   pj_int16_t *rec_frm,
-					   const pj_int16_t *play_frm,
-					   unsigned options,
-					   void *reserved );
 
 
Index: pjproject/trunk/pjmedia/src/pjmedia/endpoint.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/endpoint.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/endpoint.c	(revision 1417)
@@ -51,23 +51,4 @@
 
 
-/**
- * Defined in pjmedia/errno.c
- * 
- * Get error message for the specified error code. Note that this
- * function is only able to decode PJMEDIA specific error code.
- * Application should use pj_strerror(), which should be able to
- * decode all error codes belonging to all subsystems (e.g. pjlib,
- * pjmedia, pjsip, etc).
- *
- * @param status    The error code.
- * @param buffer    The buffer where to put the error message.
- * @param bufsize   Size of the buffer.
- *
- * @return	    The error message as NULL terminated string,
- *                  wrapped with pj_str_t.
- */
-PJ_DECL(pj_str_t) pjmedia_strerror( pj_status_t status, char *buffer,
-				    pj_size_t bufsize);
-
 
 /* Worker thread proc. */
Index: pjproject/trunk/pjmedia/src/pjmedia/g711.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/g711.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/g711.c	(revision 1417)
@@ -43,8 +43,4 @@
 #define SAMPLES_PER_FRAME   (8000 * PTIME / 1000)   /* 80 samples   */
 
-/* These are the only public functions exported to applications */
-PJ_DECL(pj_status_t) g711_init_factory (pjmedia_codec_factory *factory, 
-					pj_pool_t *pool);
-
 /* Prototypes for G711 factory */
 static pj_status_t g711_test_alloc( pjmedia_codec_factory *factory, 
Index: pjproject/trunk/pjmedia/src/pjmedia/mem_capture.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/mem_capture.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/mem_capture.c	(revision 1417)
@@ -52,5 +52,5 @@
 
 
-PJ_DECL(pj_status_t) pjmedia_mem_capture_create(pj_pool_t *pool,
+PJ_DEF(pj_status_t) pjmedia_mem_capture_create( pj_pool_t *pool,
 						void *buffer,
 						pj_size_t size,
@@ -105,6 +105,5 @@
  * end of buffer.
  */
-PJ_DEF(pj_status_t)
-pjmedia_mem_capture_set_eof_cb( pjmedia_port *port,
+PJ_DEF(pj_status_t) pjmedia_mem_capture_set_eof_cb( pjmedia_port *port,
 				void *user_data,
 				pj_status_t (*cb)(pjmedia_port *port,
Index: pjproject/trunk/pjmedia/src/pjmedia/mem_player.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/mem_player.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/mem_player.c	(revision 1417)
@@ -106,6 +106,5 @@
  * end of buffer.
  */
-PJ_DEF(pj_status_t) 
-pjmedia_mem_player_set_eof_cb( pjmedia_port *port,
+PJ_DEF(pj_status_t) pjmedia_mem_player_set_eof_cb( pjmedia_port *port,
 			       void *user_data,
 			       pj_status_t (*cb)(pjmedia_port *port,
Index: pjproject/trunk/pjmedia/src/pjmedia/sdp.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/sdp.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/sdp.c	(revision 1417)
@@ -132,9 +132,8 @@
 }
 
-PJ_DEF(pjmedia_sdp_attr*) 
-pjmedia_sdp_attr_find (unsigned count, 
-		       pjmedia_sdp_attr *const attr_array[],
-		       const pj_str_t *name,
-		       const pj_str_t *c_fmt)
+PJ_DEF(pjmedia_sdp_attr*) pjmedia_sdp_attr_find (unsigned count, 
+				       pjmedia_sdp_attr *const attr_array[],
+				       const pj_str_t *name,
+				       const pj_str_t *c_fmt)
 {
     unsigned i;
@@ -159,9 +158,8 @@
 }
 
-PJ_DEF(pjmedia_sdp_attr*) 
-pjmedia_sdp_attr_find2(unsigned count, 
-		       pjmedia_sdp_attr *const attr_array[],
-		       const char *c_name,
-		       const pj_str_t *c_fmt)
+PJ_DEF(pjmedia_sdp_attr*) pjmedia_sdp_attr_find2(unsigned count, 
+				       pjmedia_sdp_attr *const attr_array[],
+				       const char *c_name,
+				       const pj_str_t *c_fmt)
 {
     pj_str_t name;
@@ -616,7 +614,7 @@
 }
 
-PJ_DEF(pjmedia_sdp_attr*) 
-pjmedia_sdp_media_find_attr(const pjmedia_sdp_media *m,
-			    const pj_str_t *name, const pj_str_t *fmt)
+PJ_DEF(pjmedia_sdp_attr*) pjmedia_sdp_media_find_attr(
+				const pjmedia_sdp_media *m,
+				const pj_str_t *name, const pj_str_t *fmt)
 {
     PJ_ASSERT_RETURN(m && name, NULL);
@@ -626,7 +624,7 @@
 
 
-PJ_DEF(pjmedia_sdp_attr*) 
-pjmedia_sdp_media_find_attr2(const pjmedia_sdp_media *m,
-			     const char *name, const pj_str_t *fmt)
+PJ_DEF(pjmedia_sdp_attr*) pjmedia_sdp_media_find_attr2(
+				const pjmedia_sdp_media *m,
+				const char *name, const pj_str_t *fmt)
 {
     PJ_ASSERT_RETURN(m && name, NULL);
@@ -641,14 +639,12 @@
 }
 
-PJ_DEF(unsigned) 
-pjmedia_sdp_media_remove_all_attr(pjmedia_sdp_media *m,
-				  const char *name)
+PJ_DEF(unsigned) pjmedia_sdp_media_remove_all_attr(pjmedia_sdp_media *m,
+						   const char *name)
 {
     return pjmedia_sdp_attr_remove_all(&m->attr_count, m->attr, name);
 }
 
-PJ_DEF(pj_status_t)
-pjmedia_sdp_media_remove_attr(pjmedia_sdp_media *m,
-			      pjmedia_sdp_attr *attr)
+PJ_DEF(pj_status_t) pjmedia_sdp_media_remove_attr(pjmedia_sdp_media *m,
+			      			  pjmedia_sdp_attr *attr)
 {
     return pjmedia_sdp_attr_remove(&m->attr_count, m->attr, attr);
@@ -1129,7 +1125,6 @@
  * Clone session
  */
-PJ_DEF(pjmedia_sdp_session*) 
-pjmedia_sdp_session_clone( pj_pool_t *pool,
-			   const pjmedia_sdp_session *rhs)
+PJ_DEF(pjmedia_sdp_session*) pjmedia_sdp_session_clone( pj_pool_t *pool,
+			   			const pjmedia_sdp_session *rhs)
 {
     pjmedia_sdp_session *sess;
Index: pjproject/trunk/pjmedia/src/pjmedia/sdp_neg.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/sdp_neg.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/sdp_neg.c	(revision 1417)
@@ -67,6 +67,5 @@
  * Create with local offer.
  */
-PJ_DEF(pj_status_t) 
-pjmedia_sdp_neg_create_w_local_offer( pj_pool_t *pool,
+PJ_DEF(pj_status_t) pjmedia_sdp_neg_create_w_local_offer( pj_pool_t *pool,
 				      const pjmedia_sdp_session *local,
 				      pjmedia_sdp_neg **p_neg)
@@ -99,6 +98,5 @@
  * Create with remote offer and initial local offer/answer.
  */
-PJ_DEF(pj_status_t) 
-pjmedia_sdp_neg_create_w_remote_offer(pj_pool_t *pool,
+PJ_DEF(pj_status_t) pjmedia_sdp_neg_create_w_remote_offer(pj_pool_t *pool,
 				      const pjmedia_sdp_session *initial,
 				      const pjmedia_sdp_session *remote,
@@ -148,7 +146,7 @@
  * Set codec order preference.
  */
-PJ_DEF(pj_status_t)
-pjmedia_sdp_neg_set_prefer_remote_codec_order(pjmedia_sdp_neg *neg,
-					      pj_bool_t prefer_remote)
+PJ_DEF(pj_status_t) pjmedia_sdp_neg_set_prefer_remote_codec_order(
+						pjmedia_sdp_neg *neg,
+						pj_bool_t prefer_remote)
 {
     PJ_ASSERT_RETURN(neg, PJ_EINVAL);
@@ -161,6 +159,5 @@
  * Get SDP negotiator state.
  */
-PJ_DEF(pjmedia_sdp_neg_state)
-pjmedia_sdp_neg_get_state( pjmedia_sdp_neg *neg )
+PJ_DEF(pjmedia_sdp_neg_state) pjmedia_sdp_neg_get_state( pjmedia_sdp_neg *neg )
 {
     /* Check arguments are valid. */
@@ -170,7 +167,6 @@
 
 
-PJ_DEF(pj_status_t) 
-pjmedia_sdp_neg_get_active_local( pjmedia_sdp_neg *neg,
-				  const pjmedia_sdp_session **local)
+PJ_DEF(pj_status_t) pjmedia_sdp_neg_get_active_local( pjmedia_sdp_neg *neg,
+					const pjmedia_sdp_session **local)
 {
     PJ_ASSERT_RETURN(neg && local, PJ_EINVAL);
@@ -182,6 +178,5 @@
 
 
-PJ_DEF(pj_status_t) 
-pjmedia_sdp_neg_get_active_remote( pjmedia_sdp_neg *neg,
+PJ_DEF(pj_status_t) pjmedia_sdp_neg_get_active_remote( pjmedia_sdp_neg *neg,
 				   const pjmedia_sdp_session **remote)
 {
@@ -194,6 +189,5 @@
 
 
-PJ_DEF(pj_bool_t)
-pjmedia_sdp_neg_was_answer_remote(pjmedia_sdp_neg *neg)
+PJ_DEF(pj_bool_t) pjmedia_sdp_neg_was_answer_remote(pjmedia_sdp_neg *neg)
 {
     PJ_ASSERT_RETURN(neg, PJ_FALSE);
@@ -203,6 +197,5 @@
 
 
-PJ_DEF(pj_status_t)
-pjmedia_sdp_neg_get_neg_remote( pjmedia_sdp_neg *neg,
+PJ_DEF(pj_status_t) pjmedia_sdp_neg_get_neg_remote( pjmedia_sdp_neg *neg,
 				const pjmedia_sdp_session **remote)
 {
@@ -214,6 +207,5 @@
 }
 
-PJ_DEF(pj_status_t) 
-pjmedia_sdp_neg_get_neg_local( pjmedia_sdp_neg *neg,
+PJ_DEF(pj_status_t) pjmedia_sdp_neg_get_neg_local( pjmedia_sdp_neg *neg,
 			       const pjmedia_sdp_session **local)
 {
@@ -229,6 +221,5 @@
  * Modify local SDP and wait for remote answer.
  */
-PJ_DEF(pj_status_t) 
-pjmedia_sdp_neg_modify_local_offer( pj_pool_t *pool,
+PJ_DEF(pj_status_t) pjmedia_sdp_neg_modify_local_offer( pj_pool_t *pool,
 				    pjmedia_sdp_neg *neg,
 				    const pjmedia_sdp_session *local)
@@ -250,6 +241,5 @@
 
 
-PJ_DEF(pj_status_t) 
-pjmedia_sdp_neg_send_local_offer( pj_pool_t *pool,
+PJ_DEF(pj_status_t) pjmedia_sdp_neg_send_local_offer( pj_pool_t *pool,
 				  pjmedia_sdp_neg *neg,
 				  const pjmedia_sdp_session **offer)
@@ -286,6 +276,5 @@
 
 
-PJ_DEF(pj_status_t) 
-pjmedia_sdp_neg_set_remote_answer( pj_pool_t *pool,
+PJ_DEF(pj_status_t) pjmedia_sdp_neg_set_remote_answer( pj_pool_t *pool,
 				   pjmedia_sdp_neg *neg,
 				   const pjmedia_sdp_session *remote)
@@ -309,6 +298,5 @@
 }
 
-PJ_DEF(pj_status_t) 
-pjmedia_sdp_neg_set_remote_offer( pj_pool_t *pool,
+PJ_DEF(pj_status_t) pjmedia_sdp_neg_set_remote_offer( pj_pool_t *pool,
 				  pjmedia_sdp_neg *neg,
 				  const pjmedia_sdp_session *remote)
@@ -331,6 +319,5 @@
 }
 
-PJ_DEF(pj_status_t) 
-pjmedia_sdp_neg_set_local_answer( pj_pool_t *pool,
+PJ_DEF(pj_status_t) pjmedia_sdp_neg_set_local_answer( pj_pool_t *pool,
 				  pjmedia_sdp_neg *neg,
 				  const pjmedia_sdp_session *local)
Index: pjproject/trunk/pjmedia/src/pjmedia/session.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/session.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/session.c	(revision 1417)
@@ -479,6 +479,5 @@
  * Initialize session info from SDP session descriptors.
  */
-PJ_DEF(pj_status_t) 
-pjmedia_session_info_from_sdp( pj_pool_t *pool,
+PJ_DEF(pj_status_t) pjmedia_session_info_from_sdp( pj_pool_t *pool,
 			       pjmedia_endpt *endpt,
 			       unsigned max_streams,
@@ -761,6 +760,5 @@
  * Install DTMF callback.
  */
-PJ_DEF(pj_status_t)
-pjmedia_session_set_dtmf_callback(pjmedia_session *session,
+PJ_DEF(pj_status_t) pjmedia_session_set_dtmf_callback(pjmedia_session *session,
 				  unsigned index,
 				  void (*cb)(pjmedia_stream*, 
Index: pjproject/trunk/pjmedia/src/pjmedia/splitcomb.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/splitcomb.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/splitcomb.c	(revision 1417)
@@ -217,6 +217,5 @@
  * Create reverse phase port for the specified channel.
  */
-PJ_DEF(pj_status_t) 
-pjmedia_splitcomb_create_rev_channel( pj_pool_t *pool,
+PJ_DEF(pj_status_t) pjmedia_splitcomb_create_rev_channel( pj_pool_t *pool,
 				      pjmedia_port *splitcomb,
 				      unsigned ch_num,
Index: pjproject/trunk/pjmedia/src/pjmedia/transport_udp.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/transport_udp.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/transport_udp.c	(revision 1417)
@@ -325,6 +325,5 @@
  * Get media socket info.
  */
-PJ_DEF(pj_status_t) 
-pjmedia_transport_udp_get_info( pjmedia_transport *tp,
+PJ_DEF(pj_status_t) pjmedia_transport_udp_get_info( pjmedia_transport *tp,
 				pjmedia_transport_udp_info *inf)
 {
Index: pjproject/trunk/pjmedia/src/pjmedia/wav_player.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/wav_player.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/wav_player.c	(revision 1417)
@@ -456,6 +456,5 @@
  * end of file.
  */
-PJ_DEF(pj_status_t) 
-pjmedia_wav_player_set_eof_cb( pjmedia_port *port,
+PJ_DEF(pj_status_t) pjmedia_wav_player_set_eof_cb( pjmedia_port *port,
 			       void *user_data,
 			       pj_status_t (*cb)(pjmedia_port *port,
Index: pjproject/trunk/pjmedia/src/pjmedia/wav_playlist.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/wav_playlist.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/wav_playlist.c	(revision 1417)
@@ -539,6 +539,5 @@
  * end of the last file.
  */
-PJ_DEF(pj_status_t)
-pjmedia_wav_playlist_set_eof_cb(pjmedia_port *port,
+PJ_DEF(pj_status_t) pjmedia_wav_playlist_set_eof_cb(pjmedia_port *port,
 			        void *user_data,
 			        pj_status_t (*cb)(pjmedia_port *port,
Index: pjproject/trunk/pjmedia/src/pjmedia/wav_writer.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/wav_writer.c	(revision 1416)
+++ pjproject/trunk/pjmedia/src/pjmedia/wav_writer.c	(revision 1417)
@@ -195,6 +195,5 @@
  * Register callback.
  */
-PJ_DEF(pj_status_t) 
-pjmedia_wav_writer_port_set_cb( pjmedia_port *port,
+PJ_DEF(pj_status_t) pjmedia_wav_writer_port_set_cb( pjmedia_port *port,
 				pj_size_t pos,
 				void *user_data,
Index: pjproject/trunk/pjnath/include/pjnath/stun_msg.h
===================================================================
--- pjproject/trunk/pjnath/include/pjnath/stun_msg.h	(revision 1416)
+++ pjproject/trunk/pjnath/include/pjnath/stun_msg.h	(revision 1417)
@@ -1418,5 +1418,5 @@
  * @return		PJ_SUCCESS on success or the appropriate error code.
  */
-PJ_DEF(pj_status_t)  pj_stun_uint64_attr_create(pj_pool_t *pool,
+PJ_DECL(pj_status_t)  pj_stun_uint64_attr_create(pj_pool_t *pool,
 					        int attr_type,
 					        const pj_timestamp *value,
Index: pjproject/trunk/pjsip-apps/src/samples/pjsip-perf.c
===================================================================
--- pjproject/trunk/pjsip-apps/src/samples/pjsip-perf.c	(revision 1416)
+++ pjproject/trunk/pjsip-apps/src/samples/pjsip-perf.c	(revision 1417)
@@ -1197,5 +1197,5 @@
     app.thread_count = 1;
     app.client.job_count = DEFAULT_COUNT;
-    app.client.method = pjsip_options_method;
+    app.client.method = *pjsip_get_options_method();
     app.client.job_window = c = JOB_WINDOW;
     app.client.timeout = 60;
Index: pjproject/trunk/pjsip-apps/src/samples/stateful_proxy.c
===================================================================
--- pjproject/trunk/pjsip-apps/src/samples/stateful_proxy.c	(revision 1416)
+++ pjproject/trunk/pjsip-apps/src/samples/stateful_proxy.c	(revision 1417)
@@ -252,5 +252,5 @@
 	/* Find the UAS INVITE transaction */
 	pjsip_tsx_create_key(rdata->tp_info.pool, &key, PJSIP_UAS_ROLE,
-			     &pjsip_invite_method, rdata);
+			     pjsip_get_invite_method(), rdata);
 	invite_uas = pjsip_tsx_layer_find_tsx(&key, PJ_TRUE);
 	if (!invite_uas) {
Index: pjproject/trunk/pjsip-apps/src/symbian_ua/ua.cpp
===================================================================
--- pjproject/trunk/pjsip-apps/src/symbian_ua/ua.cpp	(revision 1416)
+++ pjproject/trunk/pjsip-apps/src/symbian_ua/ua.cpp	(revision 1417)
@@ -439,10 +439,10 @@
 	    "Menu:\n"
 	    "  d    Dump states\n"
-	    "  D    Dump all states (detail)\n"
+	    "  D    Dump states detail\n"
 	    "  P    Dump pool factory\n"
-	    "  m    Make call to " SIP_DST_URI "\n"
+	    "  m    Call " SIP_DST_URI "\n"
 	    "  a    Answer call\n"
 	    "  h    Hangup all calls\n"
-	    "  s    Subscribe to " SIP_DST_URI "\n"
+	    "  s    Subscribe " SIP_DST_URI "\n"
 	    "  S    Unsubscribe presence\n"
 	    "  o    Set account online\n"
@@ -468,5 +468,5 @@
     case 'p':
     case 'P':
-	    pj_pool_factory_dump(&pjsua_var.cp.factory, PJ_TRUE);
+	    pj_pool_factory_dump(pjsua_get_pool_factory(), PJ_TRUE);
 	    break;
     case 'm':
Index: pjproject/trunk/pjsip/include/pjsip-simple/errno.h
===================================================================
--- pjproject/trunk/pjsip/include/pjsip-simple/errno.h	(revision 1416)
+++ pjproject/trunk/pjsip/include/pjsip-simple/errno.h	(revision 1417)
@@ -20,6 +20,7 @@
 #define __PJSIP_SIMPLE_ERRNO_H__
 
+#include <pjsip/sip_errno.h>
 
-#include <pjsip/sip_errno.h>
+PJ_BEGIN_DECL
 
 /**
@@ -88,4 +89,23 @@
 #define PJSIP_SIMPLE_EBADISCOMPOSE  (PJSIP_SIMPLE_ERRNO_START+40)   /*270040*/
 
+/**
+ * Get error message for the specified error code. Note that this
+ * function is only able to decode PJSIP-SIMPLE specific error code.
+ * Application should use pj_strerror(), which should be able to
+ * decode all error codes belonging to all subsystems (e.g. pjlib,
+ * pjmedia, pjsip, etc).
+ *
+ * @param status    The error code.
+ * @param buffer    The buffer where to put the error message.
+ * @param bufsize   Size of the buffer.
+ *
+ * @return	    The error message as NULL terminated string,
+ *                  wrapped with pj_str_t.
+ */
+PJ_DECL(pj_str_t) pjsipsimple_strerror(pj_status_t status, 
+				       char *buffer, pj_size_t bufsize);
+
+
+PJ_END_DECL
 
 #endif	/* __PJSIP_SIMPLE_ERRNO_H__ */
Index: pjproject/trunk/pjsip/include/pjsip-simple/evsub.h
===================================================================
--- pjproject/trunk/pjsip/include/pjsip-simple/evsub.h	(revision 1416)
+++ pjproject/trunk/pjsip/include/pjsip-simple/evsub.h	(revision 1417)
@@ -203,13 +203,22 @@
 
 /**
+ * SUBSCRIBE method constant. @see pjsip_get_subscribe_method()
+ */
+PJ_DECL_DATA(const pjsip_method) pjsip_subscribe_method;
+
+/**
+ * NOTIFY method constant. @see pjsip_get_notify_method()
+ */
+PJ_DECL_DATA(const pjsip_method) pjsip_notify_method;
+
+/**
  * SUBSCRIBE method constant.
  */
-extern const pjsip_method pjsip_subscribe_method;
+PJ_DECL(const pjsip_method*) pjsip_get_subscribe_method();
 
 /**
  * NOTIFY method constant.
  */
-extern const pjsip_method pjsip_notify_method;
-
+PJ_DECL(const pjsip_method*) pjsip_get_notify_method();
 
 
Index: pjproject/trunk/pjsip/include/pjsip-simple/evsub_msg.h
===================================================================
--- pjproject/trunk/pjsip/include/pjsip-simple/evsub_msg.h	(revision 1416)
+++ pjproject/trunk/pjsip/include/pjsip-simple/evsub_msg.h	(revision 1417)
@@ -105,5 +105,5 @@
  * Initialize parser for event notify module.
  */
-PJ_DEF(void) pjsip_evsub_init_parser(void);
+PJ_DECL(void) pjsip_evsub_init_parser(void);
 
 
Index: pjproject/trunk/pjsip/include/pjsip-ua/sip_xfer.h
===================================================================
--- pjproject/trunk/pjsip/include/pjsip-ua/sip_xfer.h	(revision 1416)
+++ pjproject/trunk/pjsip/include/pjsip-ua/sip_xfer.h	(revision 1417)
@@ -62,8 +62,9 @@
 
 
-/**
- * Declaration for REFER method constant.
- */
-extern const pjsip_method pjsip_refer_method;
+/** Declaration for REFER method constant. */
+PJ_DECL_DATA(const pjsip_method) pjsip_refer_method;
+
+/** Get REFER method constant */
+PJ_DECL(const pjsip_method*) pjsip_get_refer_method();
 
 
Index: pjproject/trunk/pjsip/include/pjsip/sip_config.h
===================================================================
--- pjproject/trunk/pjsip/include/pjsip/sip_config.h	(revision 1416)
+++ pjproject/trunk/pjsip/include/pjsip/sip_config.h	(revision 1417)
@@ -468,7 +468,7 @@
 
 /* Message/URL related constants. */
-#define PJSIP_MAX_CALL_ID_LEN		PJ_GUID_STRING_LENGTH
-#define PJSIP_MAX_TAG_LEN		PJ_GUID_STRING_LENGTH
-#define PJSIP_MAX_BRANCH_LEN		(PJSIP_RFC3261_BRANCH_LEN + PJ_GUID_STRING_LENGTH + 2)
+#define PJSIP_MAX_CALL_ID_LEN		pj_GUID_STRING_LENGTH()
+#define PJSIP_MAX_TAG_LEN		pj_GUID_STRING_LENGTH()
+#define PJSIP_MAX_BRANCH_LEN		(PJSIP_RFC3261_BRANCH_LEN + pj_GUID_STRING_LENGTH() + 2)
 #define PJSIP_MAX_HNAME_LEN		64
 
Index: pjproject/trunk/pjsip/include/pjsip/sip_dialog.h
===================================================================
--- pjproject/trunk/pjsip/include/pjsip/sip_dialog.h	(revision 1416)
+++ pjproject/trunk/pjsip/include/pjsip/sip_dialog.h	(revision 1417)
@@ -87,4 +87,5 @@
 } pjsip_dialog_state;
 
+
 /**
  * This structure describes the dialog structure. Application MUST NOT
@@ -127,4 +128,5 @@
     pj_bool_t		uac_has_2xx;/**< UAC has received 2xx response?	    */
     pj_bool_t		secure;	    /**< Use secure transport?		    */
+    pj_bool_t		add_allow;  /**< Add Allow header in requests?	    */
     pjsip_cid_hdr      *call_id;    /**< Call-ID header.		    */
     pjsip_route_hdr	route_set;  /**< Route set.			    */
Index: pjproject/trunk/pjsip/include/pjsip/sip_errno.h
===================================================================
--- pjproject/trunk/pjsip/include/pjsip/sip_errno.h	(revision 1416)
+++ pjproject/trunk/pjsip/include/pjsip/sip_errno.h	(revision 1417)
@@ -488,4 +488,20 @@
 
 
+/**
+ * Get error message for the specified error code. Note that this
+ * function is only able to decode PJSIP specific error code.
+ * Application should use pj_strerror(), which should be able to
+ * decode all error codes belonging to all subsystems (e.g. pjlib,
+ * pjmedia, pjsip, etc).
+ *
+ * @param status    The error code.
+ * @param buffer    The buffer where to put the error message.
+ * @param bufsize   Size of the buffer.
+ *
+ * @return	    The error message as NULL terminated string,
+ *                  wrapped with pj_str_t.
+ */
+PJ_DECL(pj_str_t) pjsip_strerror(pj_status_t status, 
+				 char *buffer, pj_size_t bufsize);
 
 
@@ -498,2 +514,3 @@
 
 #endif	/* __PJSIP_SIP_ERRNO_H__ */
+
Index: pjproject/trunk/pjsip/include/pjsip/sip_event.h
===================================================================
--- pjproject/trunk/pjsip/include/pjsip/sip_event.h	(revision 1416)
+++ pjproject/trunk/pjsip/include/pjsip/sip_event.h	(revision 1417)
@@ -219,5 +219,5 @@
  * @note defined in sip_util.c
  */
-PJ_DEF(const char *) pjsip_event_str(pjsip_event_id_e e);
+PJ_DECL(const char *) pjsip_event_str(pjsip_event_id_e e);
 
 /**
Index: pjproject/trunk/pjsip/include/pjsip/sip_msg.h
===================================================================
--- pjproject/trunk/pjsip/include/pjsip/sip_msg.h	(revision 1416)
+++ pjproject/trunk/pjsip/include/pjsip/sip_msg.h	(revision 1417)
@@ -85,11 +85,42 @@
  * For convenience, standard method structures are defined in the library.
  */
-extern const pjsip_method pjsip_invite_method;	    /**< INVITE structure.  */
-extern const pjsip_method pjsip_cancel_method;	    /**< CANCEL structure.  */
-extern const pjsip_method pjsip_ack_method;	    /**< ACK structure.     */
-extern const pjsip_method pjsip_bye_method;	    /**< BYE structure.     */
-extern const pjsip_method pjsip_register_method;    /**< REGISTER structure.*/
-extern const pjsip_method pjsip_options_method;	    /**< OPTIONS structure. */
-
+/** INVITE method constant. @see pjsip_get_invite_method() */
+PJ_DECL_DATA(const pjsip_method) pjsip_invite_method;
+
+/** CANCEL method constant. @see pjsip_get_cancel_method() */
+PJ_DECL_DATA(const pjsip_method) pjsip_cancel_method;
+
+/** ACK method constant. @see pjsip_get_ack_method() */
+PJ_DECL_DATA(const pjsip_method) pjsip_ack_method;
+
+/** BYE method constant. @see pjsip_get_bye_method() */
+PJ_DECL_DATA(const pjsip_method) pjsip_bye_method;
+
+/** REGISTER method constant. @see pjsip_get_register_method() */
+PJ_DECL_DATA(const pjsip_method) pjsip_register_method;
+
+/** OPTIONS method constant. @see pjsip_get_options_method() */
+PJ_DECL_DATA(const pjsip_method) pjsip_options_method;
+
+/*
+ * Accessor functions for standard SIP methods.
+ */
+/** Get INVITE method constant. */
+PJ_DECL(const pjsip_method*) pjsip_get_invite_method(void);
+/** Get CANCEL method constant. */
+PJ_DECL(const pjsip_method*) pjsip_get_cancel_method(void);
+/** Get ACK method constant. */
+PJ_DECL(const pjsip_method*) pjsip_get_ack_method(void);
+/** Get BYE method constant. */
+PJ_DECL(const pjsip_method*) pjsip_get_bye_method(void);
+/** Get REGISTER method constant.*/
+PJ_DECL(const pjsip_method*) pjsip_get_register_method(void);
+/** Get OPTIONS method constant. */
+PJ_DECL(const pjsip_method*) pjsip_get_options_method(void);
+
+
+/*
+ * Accessor functions
+ */
 
 /** 
Index: pjproject/trunk/pjsip/include/pjsip/sip_parser.h
===================================================================
--- pjproject/trunk/pjsip/include/pjsip/sip_parser.h	(revision 1416)
+++ pjproject/trunk/pjsip/include/pjsip/sip_parser.h	(revision 1417)
@@ -316,49 +316,62 @@
 
 
-/*
- * Various specification used in parsing, exported here as extern for other
- * parsers.
- */
-extern pj_cis_t    
-    pjsip_HOST_SPEC,		/**< For scanning host part. */
-    pjsip_DIGIT_SPEC,		/**< Decimal digits */
-    pjsip_ALPHA_SPEC,		/**< Alpha (A-Z, a-z) */
-    pjsip_ALNUM_SPEC,		/**< Decimal + Alpha. */
-    pjsip_TOKEN_SPEC,		/**< Token. */
-    pjsip_TOKEN_SPEC_ESC,	/**< Token without '%' character */
-    pjsip_HEX_SPEC,	        /**< Hexadecimal digits. */
-    pjsip_PARAM_CHAR_SPEC,      /**< For scanning pname (or pvalue when it's 
-				     not quoted.) in URI */
-    pjsip_PARAM_CHAR_SPEC_ESC,	/**< Variant without the escape ('%') char */
-    pjsip_HDR_CHAR_SPEC,	/**< Chars in hname/havalue in URL. */
-    pjsip_HDR_CHAR_SPEC_ESC,	/**< Variant without the escape ('%') char */
-    pjsip_PROBE_USER_HOST_SPEC, /**< Hostname characters. */
-    pjsip_PASSWD_SPEC,		/**< Password. */
-    pjsip_PASSWD_SPEC_ESC,	/**< Variant without the escape ('%') char */
-    pjsip_USER_SPEC,		/**< User */
-    pjsip_USER_SPEC_ESC,	/**< Variant without the escape ('%') char */
-    pjsip_NOT_NEWLINE,		/**< For eating up header, basicly any chars
-				     except newlines or zero. */
-    pjsip_NOT_COMMA_OR_NEWLINE, /**< Array elements. */
-    pjsip_DISPLAY_SPEC;		/**< Used when searching for display name. */
-
-/*
- * Various string constants.
- */
-extern const pj_str_t pjsip_USER_STR,	    /**< "user" string constant.    */
-		      pjsip_METHOD_STR,	    /**< "method" string constant   */
-		      pjsip_TRANSPORT_STR,  /**< "transport" string const.  */
-		      pjsip_MADDR_STR,	    /**< "maddr" string const.	    */
-		      pjsip_LR_STR,	    /**< "lr" string const.	    */
-		      pjsip_SIP_STR,	    /**< "sip" string constant.	    */
-		      pjsip_SIPS_STR,	    /**< "sips" string constant.    */
-		      pjsip_TEL_STR,	    /**< "tel" string constant.	    */
-		      pjsip_BRANCH_STR,	    /**< "branch" string constant.  */
-		      pjsip_TTL_STR,	    /**< "ttl" string constant.	    */
-		      pjsip_RECEIVED_STR,   /**< "received" string const.   */
-		      pjsip_Q_STR,	    /**< "q" string constant.	    */
-		      pjsip_EXPIRES_STR,    /**< "expires" string constant. */
-		      pjsip_TAG_STR,	    /**< "tag" string constant.	    */
-		      pjsip_RPORT_STR;	    /**< "rport" string const.	    */
+/**
+ * Parser constants. @see pjsip_parser_const()
+ */
+typedef struct pjsip_parser_const_t
+{
+    const pj_str_t pjsip_USER_STR;	/**< "user" string constant.    */
+    const pj_str_t pjsip_METHOD_STR;	/**< "method" string constant   */
+    const pj_str_t pjsip_TRANSPORT_STR;	/**< "transport" string const.  */
+    const pj_str_t pjsip_MADDR_STR;	/**< "maddr" string const.	*/
+    const pj_str_t pjsip_LR_STR;	/**< "lr" string const.		*/
+    const pj_str_t pjsip_SIP_STR;	/**< "sip" string constant.	*/
+    const pj_str_t pjsip_SIPS_STR;	/**< "sips" string constant.    */
+    const pj_str_t pjsip_TEL_STR;	/**< "tel" string constant.	*/
+    const pj_str_t pjsip_BRANCH_STR;	/**< "branch" string constant.  */
+    const pj_str_t pjsip_TTL_STR;	/**< "ttl" string constant.	*/
+    const pj_str_t pjsip_RECEIVED_STR;	/**< "received" string const.   */
+    const pj_str_t pjsip_Q_STR;		/**< "q" string constant.	*/
+    const pj_str_t pjsip_EXPIRES_STR;	/**< "expires" string constant. */
+    const pj_str_t pjsip_TAG_STR;	/**< "tag" string constant.	*/
+    const pj_str_t pjsip_RPORT_STR;	/**< "rport" string const.	*/
+
+    pj_cis_t pjsip_HOST_SPEC;		/**< For scanning host part.	*/
+    pj_cis_t pjsip_DIGIT_SPEC;		/**< Decimal digits		*/
+    pj_cis_t pjsip_ALPHA_SPEC;		/**< Alpha (A-Z, a-z)		*/
+    pj_cis_t pjsip_ALNUM_SPEC;		/**< Decimal + Alpha.		*/
+    pj_cis_t pjsip_TOKEN_SPEC;		/**< Token.			*/
+    pj_cis_t pjsip_TOKEN_SPEC_ESC;	/**< Token without '%' character */
+    pj_cis_t pjsip_HEX_SPEC;  		/**< Hexadecimal digits.	*/
+    pj_cis_t pjsip_PARAM_CHAR_SPEC;	/**< For scanning pname (or pvalue
+					     when it's  not quoted.) in URI */
+    pj_cis_t pjsip_PARAM_CHAR_SPEC_ESC;	/**< Variant without the escape ('%')
+					     char			*/
+    pj_cis_t pjsip_HDR_CHAR_SPEC;	/**< Chars in hname/havalue in URL. */
+    pj_cis_t pjsip_HDR_CHAR_SPEC_ESC;	/**< Variant without the escape ('%')
+					     char			*/
+    pj_cis_t pjsip_PROBE_USER_HOST_SPEC;/**< Hostname characters.	*/
+    pj_cis_t pjsip_PASSWD_SPEC;		/**< Password.			*/
+    pj_cis_t pjsip_PASSWD_SPEC_ESC;	/**< Variant without the escape ('%')
+					     char			*/
+    pj_cis_t pjsip_USER_SPEC;		/**< User */
+    pj_cis_t pjsip_USER_SPEC_ESC;	/**< Variant without the escape ('%')
+					     char			*/
+    pj_cis_t pjsip_USER_SPEC_LENIENT;	/**< User, with additional '#' char */
+    pj_cis_t pjsip_USER_SPEC_LENIENT_ESC;/**< pjsip_USER_SPEC_ESC with '#' */
+    pj_cis_t pjsip_NOT_NEWLINE;		/**< For eating up header, basically
+					     any chars except newlines or 
+					     zero.			*/
+    pj_cis_t pjsip_NOT_COMMA_OR_NEWLINE;/**< Array elements.		*/
+    pj_cis_t pjsip_DISPLAY_SPEC;	/**< Used when searching for display
+					     name.			*/
+
+} pjsip_parser_const_t;
+
+
+/**
+ * Get parser constants.
+ */
+PJ_DECL(const pjsip_parser_const_t*) pjsip_parser_const(void);
 
 
@@ -372,15 +385,16 @@
 
 /* Parse parameter in header (matching the character as token) */
-void pjsip_parse_param_imp(  pj_scanner *scanner, pj_pool_t *pool,
-			     pj_str_t *pname, pj_str_t *pvalue,
-			     unsigned opt);
+PJ_DECL(void) pjsip_parse_param_imp(pj_scanner *scanner, pj_pool_t *pool,
+			     	    pj_str_t *pname, pj_str_t *pvalue,
+			     	    unsigned opt);
 /* Parse parameter in URL (matching the character as paramchar) */
-void pjsip_parse_uri_param_imp(  pj_scanner *scanner, pj_pool_t *pool,
-				 pj_str_t *pname, pj_str_t *pvalue,
-				 unsigned opt);
-void pjsip_concat_param_imp( pj_str_t *param, pj_pool_t *pool, 
-			     const pj_str_t *pname, const pj_str_t *pvalue, 
-			     int sepchar);
-void pjsip_parse_end_hdr_imp ( pj_scanner *scanner );
+PJ_DECL(void) pjsip_parse_uri_param_imp(pj_scanner *scanner, pj_pool_t *pool,
+				 	pj_str_t *pname, pj_str_t *pvalue,
+				 	unsigned opt);
+PJ_DECL(void) pjsip_concat_param_imp(pj_str_t *param, pj_pool_t *pool, 
+			     	     const pj_str_t *pname, 
+				     const pj_str_t *pvalue, 
+			     	     int sepchar);
+PJ_DECL(void) pjsip_parse_end_hdr_imp ( pj_scanner *scanner );
 
 PJ_END_DECL
Index: pjproject/trunk/pjsip/include/pjsip/sip_ua_layer.h
===================================================================
--- pjproject/trunk/pjsip/include/pjsip/sip_ua_layer.h	(revision 1416)
+++ pjproject/trunk/pjsip/include/pjsip/sip_ua_layer.h	(revision 1417)
@@ -115,5 +115,5 @@
  * @param detail	If non-zero, list of dialogs will be printed.
  */
-PJ_DEF(void) pjsip_ua_dump(pj_bool_t detail);
+PJ_DECL(void) pjsip_ua_dump(pj_bool_t detail);
 
 /**
Index: pjproject/trunk/pjsip/include/pjsua-lib/pjsua.h
===================================================================
--- pjproject/trunk/pjsip/include/pjsua-lib/pjsua.h	(revision 1416)
+++ pjproject/trunk/pjsip/include/pjsua-lib/pjsua.h	(revision 1417)
@@ -475,14 +475,6 @@
  * \endcode
  */
-PJ_INLINE(void) pjsua_logging_config_default(pjsua_logging_config *cfg)
-{
-    pj_bzero(cfg, sizeof(*cfg));
-
-    cfg->msg_logging = PJ_TRUE;
-    cfg->level = 5;
-    cfg->console_level = 4;
-    cfg->decor = PJ_LOG_HAS_SENDER | PJ_LOG_HAS_TIME | 
-		 PJ_LOG_HAS_MICRO_SEC | PJ_LOG_HAS_NEWLINE;
-}
+PJ_DECL(void) pjsua_logging_config_default(pjsua_logging_config *cfg);
+
 
 /**
@@ -497,12 +489,7 @@
  * one config to another, but this has not been tested.
  */
-PJ_INLINE(void) pjsua_logging_config_dup(pj_pool_t *pool,
-					 pjsua_logging_config *dst,
-					 const pjsua_logging_config *src)
-{
-    pj_memcpy(dst, src, sizeof(*src));
-    pj_strdup_with_null(pool, &dst->log_filename, &src->log_filename);
-}
-
+PJ_DECL(void) pjsua_logging_config_dup(pj_pool_t *pool,
+				       pjsua_logging_config *dst,
+				       const pjsua_logging_config *src);
 
 
@@ -1016,11 +1003,5 @@
 
  */
-PJ_INLINE(void) pjsua_config_default(pjsua_config *cfg)
-{
-    pj_bzero(cfg, sizeof(*cfg));
-
-    cfg->max_calls = 4;
-    cfg->thread_cnt = 1;
-}
+PJ_DECL(void) pjsua_config_default(pjsua_config *cfg);
 
 
@@ -1036,14 +1017,7 @@
  * variable to another, but this has not been tested.
  */
-PJ_INLINE(void) pjsip_cred_dup( pj_pool_t *pool,
-				pjsip_cred_info *dst,
-				const pjsip_cred_info *src)
-{
-    pj_strdup_with_null(pool, &dst->realm, &src->realm);
-    pj_strdup_with_null(pool, &dst->scheme, &src->scheme);
-    pj_strdup_with_null(pool, &dst->username, &src->username);
-    pj_strdup_with_null(pool, &dst->data, &src->data);
-
-}
+PJ_DECL(void) pjsip_cred_dup( pj_pool_t *pool,
+			      pjsip_cred_info *dst,
+			      const pjsip_cred_info *src);
 
 
@@ -1055,27 +1029,7 @@
  * @param src	    Source config.
  */
-PJ_INLINE(void) pjsua_config_dup(pj_pool_t *pool,
-				 pjsua_config *dst,
-				 const pjsua_config *src)
-{
-    unsigned i;
-
-    pj_memcpy(dst, src, sizeof(*src));
-
-    for (i=0; i<src->outbound_proxy_cnt; ++i) {
-	pj_strdup_with_null(pool, &dst->outbound_proxy[i],
-			    &src->outbound_proxy[i]);
-    }
-
-    for (i=0; i<src->cred_count; ++i) {
-	pjsip_cred_dup(pool, &dst->cred_info[i], &src->cred_info[i]);
-    }
-
-    pj_strdup_with_null(pool, &dst->user_agent, &src->user_agent);
-    pj_strdup_with_null(pool, &dst->stun_domain, &src->stun_domain);
-    pj_strdup_with_null(pool, &dst->stun_host, &src->stun_host);
-    pj_strdup_with_null(pool, &dst->stun_relay_host, &src->stun_relay_host);
-}
-
+PJ_DECL(void) pjsua_config_dup(pj_pool_t *pool,
+			       pjsua_config *dst,
+			       const pjsua_config *src);
 
 
@@ -1138,10 +1092,5 @@
  * \endcode
  */
-PJ_INLINE(void) pjsua_msg_data_init(pjsua_msg_data *msg_data)
-{
-    pj_bzero(msg_data, sizeof(*msg_data));
-    pj_list_init(&msg_data->hdr_list);
-}
-
+PJ_DECL(void) pjsua_msg_data_init(pjsua_msg_data *msg_data);
 
 
@@ -1486,9 +1435,5 @@
  * \endcode
  */
-PJ_INLINE(void) pjsua_transport_config_default(pjsua_transport_config *cfg)
-{
-    pj_bzero(cfg, sizeof(*cfg));
-    pjsip_tls_setting_default(&cfg->tls_setting);
-}
+PJ_DECL(void) pjsua_transport_config_default(pjsua_transport_config *cfg);
 
 
@@ -1504,12 +1449,7 @@
  * to another in Python.
  */
-PJ_INLINE(void) pjsua_transport_config_dup(pj_pool_t *pool,
-					   pjsua_transport_config *dst,
-					   const pjsua_transport_config *src)
-{
-    PJ_UNUSED_ARG(pool);
-    pj_memcpy(dst, src, sizeof(*src));
-}
-
+PJ_DECL(void) pjsua_transport_config_dup(pj_pool_t *pool,
+					 pjsua_transport_config *dst,
+					 const pjsua_transport_config *src);
 
 
@@ -1917,12 +1857,5 @@
  * \endcode
  */
-PJ_INLINE(void) pjsua_acc_config_default(pjsua_acc_config *cfg)
-{
-    pj_bzero(cfg, sizeof(*cfg));
-
-    cfg->reg_timeout = PJSUA_REG_INTERVAL;
-    cfg->transport_id = PJSUA_INVALID_ID;
-}
-
+PJ_DECL(void) pjsua_acc_config_default(pjsua_acc_config *cfg);
 
 
@@ -3065,8 +2998,5 @@
  * \endcode
  */
-PJ_INLINE(void) pjsua_buddy_config_default(pjsua_buddy_config *cfg)
-{
-    pj_bzero(cfg, sizeof(*cfg));
-}
+PJ_DECL(void) pjsua_buddy_config_default(pjsua_buddy_config *cfg);
 
 
@@ -3556,18 +3486,5 @@
  * \endcode
  */
-PJ_INLINE(void) pjsua_media_config_default(pjsua_media_config *cfg)
-{
-    pj_bzero(cfg, sizeof(*cfg));
-
-    cfg->clock_rate = PJSUA_DEFAULT_CLOCK_RATE;
-    cfg->max_media_ports = 32;
-    cfg->has_ioqueue = PJ_TRUE;
-    cfg->thread_cnt = 1;
-    cfg->quality = PJSUA_DEFAULT_CODEC_QUALITY;
-    cfg->ilbc_mode = PJSUA_DEFAULT_ILBC_MODE;
-    cfg->ec_tail_len = PJSUA_DEFAULT_EC_TAIL_LEN;
-    cfg->jb_init = cfg->jb_min_pre = cfg->jb_max_pre = cfg->jb_max = -1;
-}
-
+PJ_DECL(void) pjsua_media_config_default(pjsua_media_config *cfg);
 
 
Index: pjproject/trunk/pjsip/src/pjsip-simple/evsub.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip-simple/evsub.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip-simple/evsub.c	(revision 1417)
@@ -50,5 +50,5 @@
 };
 
-const pjsip_method pjsip_subscribe_method = 
+PJ_DEF_DATA(const pjsip_method) pjsip_subscribe_method = 
 {
     (pjsip_method_e) PJSIP_SUBSCRIBE_METHOD,
@@ -56,9 +56,26 @@
 };
 
-const pjsip_method pjsip_notify_method = 
+PJ_DEF_DATA(const pjsip_method) pjsip_notify_method = 
 {
     (pjsip_method_e) PJSIP_NOTIFY_METHOD,
     { "NOTIFY", 6 }
 };
+
+/**
+ * SUBSCRIBE method constant.
+ */
+PJ_DEF(const pjsip_method*) pjsip_get_subscribe_method()
+{
+    return &pjsip_subscribe_method;
+}
+
+/**
+ * NOTIFY method constant.
+ */
+PJ_DEF(const pjsip_method*) pjsip_get_notify_method()
+{
+    return &pjsip_notify_method;
+}
+
 
 /*
@@ -1113,6 +1130,6 @@
 
     /* Create NOTIFY request */
-    status = pjsip_dlg_create_request( sub->dlg, &pjsip_notify_method, -1, 
-				       &tdata);
+    status = pjsip_dlg_create_request( sub->dlg, pjsip_get_notify_method(), 
+				       -1, &tdata);
     if (status != PJ_SUCCESS)
 	goto on_return;
Index: pjproject/trunk/pjsip/src/pjsip-simple/evsub_msg.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip-simple/evsub_msg.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip-simple/evsub_msg.c	(revision 1417)
@@ -62,4 +62,5 @@
     char *endbuf = buf+size;
     int printed;
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
 
     copy_advance(p, hdr->name);
@@ -71,6 +72,6 @@
     
     printed = pjsip_param_print_on(&hdr->other_param, p, endbuf-p,
-				   &pjsip_TOKEN_SPEC, 
-				   &pjsip_TOKEN_SPEC, ';');
+				   &pc->pjsip_TOKEN_SPEC, 
+				   &pc->pjsip_TOKEN_SPEC, ';');
     if (printed < 0)
 	return printed;
@@ -160,4 +161,5 @@
     char *endbuf = buf+size;
     int printed;
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
 
     copy_advance(p, hdr->name);
@@ -181,6 +183,6 @@
     
     printed = pjsip_param_print_on( &hdr->other_param, p, endbuf-p, 
-				    &pjsip_TOKEN_SPEC,
-				    &pjsip_TOKEN_SPEC,
+				    &pc->pjsip_TOKEN_SPEC,
+				    &pc->pjsip_TOKEN_SPEC,
 				    ';');
     if (printed < 0)
@@ -223,6 +225,7 @@
     pjsip_event_hdr *hdr = pjsip_event_hdr_create(ctx->pool);
     const pj_str_t id_param = { "id", 2 };
-
-    pj_scan_get(ctx->scanner, &pjsip_TOKEN_SPEC, &hdr->event_type);
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
+
+    pj_scan_get(ctx->scanner, &pc->pjsip_TOKEN_SPEC, &hdr->event_type);
 
     while (*ctx->scanner->curptr == ';') {
@@ -254,5 +257,7 @@
 		   expires = { "expires", 7 },
 		   retry_after = { "retry-after", 11 };
-    pj_scan_get(ctx->scanner, &pjsip_TOKEN_SPEC, &hdr->sub_state);
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
+
+    pj_scan_get(ctx->scanner, &pc->pjsip_TOKEN_SPEC, &hdr->sub_state);
 
     while (*ctx->scanner->curptr == ';') {
Index: pjproject/trunk/pjsip/src/pjsip-ua/sip_inv.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip-ua/sip_inv.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip-ua/sip_inv.c	(revision 1417)
@@ -114,7 +114,4 @@
 };
 
-/* Config */
-extern pj_bool_t pjsip_include_allow_hdr_in_dlg;
-
 /*
  * Module load()
@@ -224,5 +221,5 @@
 	      pjsip_rx_data_get_info(rdata)));
 
-    status = pjsip_dlg_create_request(inv->dlg, &pjsip_ack_method, 
+    status = pjsip_dlg_create_request(inv->dlg, pjsip_get_ack_method(), 
 				      rdata->msg_info.cseq->cseq, &tdata);
     if (status != PJ_SUCCESS) {
@@ -1109,5 +1106,5 @@
 
     /* Create the INVITE request. */
-    status = pjsip_dlg_create_request(inv->dlg, &pjsip_invite_method, -1,
+    status = pjsip_dlg_create_request(inv->dlg, pjsip_get_invite_method(), -1,
 				      &tdata);
     if (status != PJ_SUCCESS)
@@ -1156,5 +1153,5 @@
 
     /* Add Allow header. */
-    if (pjsip_include_allow_hdr_in_dlg) {
+    if (inv->dlg->add_allow) {
 	hdr = pjsip_endpt_get_capability(inv->dlg->endpt, PJSIP_H_ALLOW, NULL);
 	if (hdr) {
@@ -1598,6 +1595,6 @@
     case PJSIP_INV_STATE_CONFIRMED:
 	/* For established dialog, send BYE */
-	status = pjsip_dlg_create_request(inv->dlg, &pjsip_bye_method, -1, 
-					  &tdata);
+	status = pjsip_dlg_create_request(inv->dlg, pjsip_get_bye_method(), 
+					  -1, &tdata);
 	break;
 
@@ -1793,5 +1790,5 @@
 
     pjsip_tsx_create_key(rdata->tp_info.pool, &key, PJSIP_ROLE_UAS,
-			 &pjsip_invite_method, rdata);
+			 pjsip_get_invite_method(), rdata);
     invite_tsx = pjsip_tsx_layer_find_tsx(&key, PJ_TRUE);
 
Index: pjproject/trunk/pjsip/src/pjsip-ua/sip_reg.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip-ua/sip_reg.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip-ua/sip_reg.c	(revision 1417)
@@ -367,5 +367,5 @@
     /* Create the request. */
     status = pjsip_endpt_create_request_from_hdr( regc->endpt, 
-						  &pjsip_register_method,
+						  pjsip_get_register_method(),
 						  regc->srv_url,
 						  regc->from_hdr,
Index: pjproject/trunk/pjsip/src/pjsip-ua/sip_replaces.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip-ua/sip_replaces.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip-ua/sip_replaces.c	(revision 1417)
@@ -69,4 +69,5 @@
     char *endbuf = buf+size;
     int printed;
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
 
     copy_advance(p, hdr->name);
@@ -84,6 +85,6 @@
     
     printed = pjsip_param_print_on(&hdr->other_param, p, endbuf-p,
-				   &pjsip_TOKEN_SPEC, 
-				   &pjsip_TOKEN_SPEC, ';');
+				   &pc->pjsip_TOKEN_SPEC, 
+				   &pc->pjsip_TOKEN_SPEC, ';');
     if (printed < 0)
 	return printed;
Index: pjproject/trunk/pjsip/src/pjsip-ua/sip_xfer.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip-ua/sip_xfer.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip-ua/sip_xfer.c	(revision 1417)
@@ -58,9 +58,13 @@
 };
 
-const pjsip_method pjsip_refer_method = {
+PJ_DEF_DATA(const pjsip_method) pjsip_refer_method = {
     (pjsip_method_e) PJSIP_REFER_METHOD,
     { "REFER", 5}
 };
 
+PJ_DEF(const pjsip_method*) pjsip_get_refer_method()
+{
+    return &pjsip_refer_method;
+}
 
 /*
@@ -145,5 +149,6 @@
 
     status = pjsip_endpt_add_capability( endpt, &mod_xfer, PJSIP_H_ALLOW, 
-					 NULL, 1, &pjsip_refer_method.name);
+					 NULL, 1, 
+					 &pjsip_get_refer_method()->name);
     if (status != PJ_SUCCESS)
 	return status;
@@ -224,5 +229,5 @@
     /* Check that request is REFER */
     PJ_ASSERT_RETURN(pjsip_method_cmp(&rdata->msg_info.msg->line.req.method,
-				      &pjsip_refer_method)==0,
+				      pjsip_get_refer_method())==0,
 		     PJSIP_ENOTREFER);
 
@@ -299,5 +304,5 @@
 
     /* Create basic REFER request */
-    status = pjsip_evsub_initiate(sub, &pjsip_refer_method, -1, 
+    status = pjsip_evsub_initiate(sub, pjsip_get_refer_method(), -1, 
 				  &tdata);
     if (status != PJ_SUCCESS)
Index: pjproject/trunk/pjsip/src/pjsip/sip_auth_msg.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip/sip_auth_msg.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip/sip_auth_msg.c	(revision 1417)
@@ -68,4 +68,5 @@
     char *startbuf = buf;
     char *endbuf = buf + size;
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
     
     copy_advance_pair_quote_cond(buf, "username=", 9, cred->username, '"', '"');
@@ -84,6 +85,6 @@
     
     printed = pjsip_param_print_on(&cred->other_param, buf, endbuf-buf, 
-				   &pjsip_TOKEN_SPEC, 
-				   &pjsip_TOKEN_SPEC, ',');
+				   &pc->pjsip_TOKEN_SPEC, 
+				   &pc->pjsip_TOKEN_SPEC, ',');
     if (printed < 0)
 	return -1;
@@ -229,4 +230,5 @@
     char *startbuf = buf;
     char *endbuf = buf + size;
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
 
     copy_advance_pair_quote_cond(buf, " realm=", 7, chal->realm, '"', '"');
@@ -242,6 +244,6 @@
     
     printed = pjsip_param_print_on(&chal->other_param, buf, endbuf-buf, 
-				   &pjsip_TOKEN_SPEC, 
-				   &pjsip_TOKEN_SPEC, ',');
+				   &pc->pjsip_TOKEN_SPEC, 
+				   &pc->pjsip_TOKEN_SPEC, ',');
     if (printed < 0)
 	return -1;
Index: pjproject/trunk/pjsip/src/pjsip/sip_auth_parser.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip/sip_auth_parser.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip/sip_auth_parser.c	(revision 1417)
@@ -196,4 +196,6 @@
 					 pjsip_authorization_hdr *hdr)
 {
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
+    
     if (*scanner->curptr == '"') {
 	pj_scan_get_quote(scanner, '"', '"', &hdr->scheme);
@@ -201,5 +203,5 @@
 	hdr->scheme.slen -= 2;
     } else {
-	pj_scan_get(scanner, &pjsip_TOKEN_SPEC, &hdr->scheme);
+	pj_scan_get(scanner, &pc->pjsip_TOKEN_SPEC, &hdr->scheme);
     }
 
@@ -222,4 +224,6 @@
 					pjsip_www_authenticate_hdr *hdr)
 {
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
+
     if (*scanner->curptr == '"') {
 	pj_scan_get_quote(scanner, '"', '"', &hdr->scheme);
@@ -227,5 +231,5 @@
 	hdr->scheme.slen -= 2;
     } else {
-	pj_scan_get(scanner, &pjsip_TOKEN_SPEC, &hdr->scheme);
+	pj_scan_get(scanner, &pc->pjsip_TOKEN_SPEC, &hdr->scheme);
     }
 
Index: pjproject/trunk/pjsip/src/pjsip/sip_dialog.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip/sip_dialog.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip/sip_dialog.c	(revision 1417)
@@ -82,4 +82,5 @@
     dlg->endpt = endpt;
     dlg->state = PJSIP_DIALOG_STATE_NULL;
+    dlg->add_allow = pjsip_include_allow_hdr_in_dlg;
 
     pj_list_init(&dlg->inv_hdr);
@@ -1201,5 +1202,5 @@
 
 	/* Add Allow header in 2xx and 405 response. */
-	if (((st_class==2 && pjsip_include_allow_hdr_in_dlg)
+	if (((st_class==2 && dlg->add_allow)
 	     || st_code==405) &&
 	    pjsip_msg_find_hdr(tdata->msg, PJSIP_H_ALLOW, NULL)==NULL) 
Index: pjproject/trunk/pjsip/src/pjsip/sip_endpoint.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip/sip_endpoint.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip/sip_endpoint.c	(revision 1417)
@@ -35,5 +35,5 @@
 #include <pj/lock.h>
 
-#define PJSIP_EX_NO_MEMORY  PJ_NO_MEMORY_EXCEPTION
+#define PJSIP_EX_NO_MEMORY  pj_NO_MEMORY_EXCEPTION()
 #define THIS_FILE	    "sip_endpoint.c"
 
@@ -117,22 +117,4 @@
 /* Specifies whether error subsystem has been registered to pjlib. */
 static int error_subsys_initialized;
-
-/**
- * Defined in sip_errno.c
- *
- * Get error message for the specified error code. This can only get
- * PJSIP specific error message. To get all types of error message,
- * use pj_strerror() instead.
- *
- * @param status    The error code.
- * @param buffer    The buffer where to put the error message.
- * @param bufsize   Size of the buffer.
- *
- * @return	    The error message as NULL terminated string,
- *                  wrapped with pj_str_t.
- */
-PJ_DECL(pj_str_t) pjsip_strerror( pj_status_t status, char *buffer,
-				  pj_size_t bufsize);
-
 
 /*
Index: pjproject/trunk/pjsip/src/pjsip/sip_msg.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip/sip_msg.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip/sip_msg.c	(revision 1417)
@@ -25,11 +25,59 @@
 #include <pj/assert.h>
 
-const pjsip_method 
-    pjsip_invite_method	    = { PJSIP_INVITE_METHOD,	{ "INVITE",6 }	},
-    pjsip_cancel_method	    = { PJSIP_CANCEL_METHOD,	{ "CANCEL",6 }	},
-    pjsip_ack_method	    = { PJSIP_ACK_METHOD,	{ "ACK",3}	},
-    pjsip_bye_method	    = { PJSIP_BYE_METHOD,	{ "BYE",3}	},
-    pjsip_register_method   = { PJSIP_REGISTER_METHOD,	{ "REGISTER",8}	},
-    pjsip_options_method    = { PJSIP_OPTIONS_METHOD,	{ "OPTIONS",7}	};
+PJ_DEF_DATA(const pjsip_method) pjsip_invite_method =
+	{ PJSIP_INVITE_METHOD, { "INVITE",6 }};
+
+PJ_DEF_DATA(const pjsip_method) pjsip_cancel_method =
+	{ PJSIP_CANCEL_METHOD, { "CANCEL",6 }};
+
+PJ_DEF_DATA(const pjsip_method) pjsip_ack_method =
+	{ PJSIP_ACK_METHOD, { "ACK",3}};
+
+PJ_DEF_DATA(const pjsip_method) pjsip_bye_method =
+	{ PJSIP_BYE_METHOD, { "BYE",3}};
+
+PJ_DEF_DATA(const pjsip_method) pjsip_register_method =
+	{ PJSIP_REGISTER_METHOD, { "REGISTER", 8}};
+
+PJ_DEF_DATA(const pjsip_method) pjsip_options_method =
+	{ PJSIP_OPTIONS_METHOD, { "OPTIONS",7}};
+
+
+/** INVITE method constant. */
+PJ_DEF(const pjsip_method*) pjsip_get_invite_method(void)
+{
+    return &pjsip_invite_method;
+}
+
+/** CANCEL method constant. */
+PJ_DEF(const pjsip_method*) pjsip_get_cancel_method(void)
+{
+    return &pjsip_cancel_method;
+}
+
+/** ACK method constant. */
+PJ_DEF(const pjsip_method*) pjsip_get_ack_method(void)
+{
+    return &pjsip_ack_method;
+}
+
+/** BYE method constant. */
+PJ_DEF(const pjsip_method*) pjsip_get_bye_method(void)
+{
+    return &pjsip_bye_method;
+}
+
+/** REGISTER method constant.*/
+PJ_DEF(const pjsip_method*) pjsip_get_register_method(void)
+{
+    return &pjsip_register_method;
+}
+
+/** OPTIONS method constant. */
+PJ_DEF(const pjsip_method*) pjsip_get_options_method(void)
+{
+    return &pjsip_options_method;
+}
+
 
 static const pj_str_t *method_names[] = 
@@ -566,9 +614,8 @@
 
 
-PJ_DEF(pjsip_generic_string_hdr*) 
-pjsip_generic_string_hdr_init( pj_pool_t *pool,
-			       void *mem,
-			       const pj_str_t *hnames,
-			       const pj_str_t *hvalue)
+PJ_DEF(pjsip_generic_string_hdr*) pjsip_generic_string_hdr_init(pj_pool_t *pool,
+					       void *mem,
+					       const pj_str_t *hnames,
+					       const pj_str_t *hvalue)
 {
     pjsip_generic_string_hdr *hdr = (pjsip_generic_string_hdr*) mem;
@@ -591,6 +638,5 @@
 }
 
-PJ_DEF(pjsip_generic_string_hdr*) 
-pjsip_generic_string_hdr_create( pj_pool_t *pool,
+PJ_DEF(pjsip_generic_string_hdr*) pjsip_generic_string_hdr_create(pj_pool_t *pool,
 				 const pj_str_t *hnames,
 				 const pj_str_t *hvalue)
@@ -1056,4 +1102,5 @@
 {
     const pj_str_t *hname = pjsip_use_compact_form? &hdr->sname : &hdr->name;
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
 
     if (hdr->star) {
@@ -1110,5 +1157,6 @@
 
 	printed = pjsip_param_print_on(&hdr->other_param, buf, endbuf-buf,
-				       &pjsip_TOKEN_SPEC, &pjsip_TOKEN_SPEC, 
+				       &pc->pjsip_TOKEN_SPEC,
+				       &pc->pjsip_TOKEN_SPEC, 
 				       ';');
 	if (printed < 0)
@@ -1347,4 +1395,5 @@
     char *endbuf = buf + size;
     const pj_str_t *hname = pjsip_use_compact_form? &hdr->sname : &hdr->name;
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
 
     copy_advance(buf, (*hname));
@@ -1362,6 +1411,6 @@
 
     printed = pjsip_param_print_on(&hdr->other_param, buf, endbuf-buf, 
-				   &pjsip_TOKEN_SPEC,
-				   &pjsip_TOKEN_SPEC, ';');
+				   &pc->pjsip_TOKEN_SPEC,
+				   &pc->pjsip_TOKEN_SPEC, ';');
     if (printed < 0)
 	return -1;
@@ -1525,4 +1574,5 @@
     char *startbuf = buf;
     char *endbuf = buf + size;
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
     /* Route and Record-Route don't compact forms */
 
@@ -1538,6 +1588,6 @@
 
     printed = pjsip_param_print_on(&hdr->other_param, buf, endbuf-buf, 
-				   &pjsip_TOKEN_SPEC, 
-				   &pjsip_TOKEN_SPEC, ';');
+				   &pc->pjsip_TOKEN_SPEC, 
+				   &pc->pjsip_TOKEN_SPEC, ';');
     if (printed < 0)
 	return -1;
@@ -1705,4 +1755,5 @@
     pj_str_t sip_ver = { "SIP/2.0/", 8 };
     const pj_str_t *hname = pjsip_use_compact_form? &hdr->sname : &hdr->name;
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
 
     if ((pj_ssize_t)size < hname->slen + sip_ver.slen + 
@@ -1758,6 +1809,6 @@
     
     printed = pjsip_param_print_on(&hdr->other_param, buf, endbuf-buf, 
-				   &pjsip_TOKEN_SPEC,
-				   &pjsip_TOKEN_SPEC, ';');
+				   &pc->pjsip_TOKEN_SPEC,
+				   &pc->pjsip_TOKEN_SPEC, ';');
     if (printed < 0)
 	return -1;
@@ -1814,8 +1865,7 @@
 }
 
-PJ_DEF(pjsip_warning_hdr*) 
-pjsip_warning_hdr_create_from_status( pj_pool_t *pool,
-				      const pj_str_t *host,
-				      pj_status_t status)
+PJ_DEF(pjsip_warning_hdr*) pjsip_warning_hdr_create_from_status(pj_pool_t *pool,
+						      const pj_str_t *host,
+						      pj_status_t status)
 {
     char errbuf[PJ_ERR_MSG_SIZE];
Index: pjproject/trunk/pjsip/src/pjsip/sip_parser.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip/sip_parser.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip/sip_parser.c	(revision 1417)
@@ -88,47 +88,26 @@
 int PJSIP_SYN_ERR_EXCEPTION;
 
-const pj_str_t  pjsip_USER_STR      = { "user", 4};
-const pj_str_t  pjsip_METHOD_STR    = { "method", 6};
-const pj_str_t  pjsip_TRANSPORT_STR = { "transport", 9};
-const pj_str_t  pjsip_MADDR_STR     = { "maddr", 5 };
-const pj_str_t  pjsip_LR_STR        = { "lr", 2 };
-const pj_str_t  pjsip_SIP_STR       = { "sip", 3 };
-const pj_str_t  pjsip_SIPS_STR      = { "sips", 4 };
-const pj_str_t  pjsip_TEL_STR       = { "tel", 3 };
-const pj_str_t  pjsip_BRANCH_STR    = { "branch", 6 };
-const pj_str_t  pjsip_TTL_STR       = { "ttl", 3 };
-const pj_str_t  pjsip_RECEIVED_STR  = { "received", 8 };
-const pj_str_t  pjsip_Q_STR         = { "q", 1 };
-const pj_str_t  pjsip_EXPIRES_STR   = { "expires", 7 };
-const pj_str_t  pjsip_TAG_STR       = { "tag", 3 };
-const pj_str_t  pjsip_RPORT_STR     = { "rport", 5};
+/* Parser constants */
+static pjsip_parser_const_t pconst =
+{
+    { "user", 4},	/* pjsip_USER_STR	*/
+    { "method", 6},	/* pjsip_METHOD_STR	*/
+    { "transport", 9},	/* pjsip_TRANSPORT_STR	*/
+    { "maddr", 5 },	/* pjsip_MADDR_STR	*/
+    { "lr", 2 },	/* pjsip_LR_STR		*/
+    { "sip", 3 },	/* pjsip_SIP_STR	*/
+    { "sips", 4 },	/* pjsip_SIPS_STR	*/
+    { "tel", 3 },	/* pjsip_TEL_STR	*/
+    { "branch", 6 },	/* pjsip_BRANCH_STR	*/
+    { "ttl", 3 },	/* pjsip_TTL_STR	*/
+    { "received", 8 },	/* pjsip_RECEIVED_STR	*/
+    { "q", 1 },		/* pjsip_Q_STR		*/
+    { "expires", 7 },	/* pjsip_EXPIRES_STR	*/
+    { "tag", 3 },	/* pjsip_TAG_STR	*/
+    { "rport", 5}	/* pjsip_RPORT_STR	*/
+};
 
 /* Character Input Specification buffer. */
 static pj_cis_buf_t cis_buf;
-
-/* Character Input Specifications. */
-pj_cis_t    pjsip_HOST_SPEC,	        /* For scanning host part. */
-	    pjsip_DIGIT_SPEC,	        /* Decimal digits */
-	    pjsip_ALPHA_SPEC,	        /* Alpha (A-Z, a-z) */
-	    pjsip_ALNUM_SPEC,	        /* Decimal + Alpha. */
-	    pjsip_TOKEN_SPEC,	        /* Token. */
-	    pjsip_TOKEN_SPEC_ESC,	/* Token without '%' character */
-	    pjsip_HEX_SPEC,	        /* Hexadecimal digits. */
-	    pjsip_PARAM_CHAR_SPEC,      /* For scanning pname (or pvalue when
-                                         * it's not quoted.) */
-	    pjsip_PARAM_CHAR_SPEC_ESC,	/* The variant without escaped char */
-	    pjsip_HDR_CHAR_SPEC,	/* Chars in hname or hvalue */
-	    pjsip_HDR_CHAR_SPEC_ESC,	/* Variant without escaped char */
-	    pjsip_PROBE_USER_HOST_SPEC, /* Hostname characters. */
-	    pjsip_PASSWD_SPEC,	        /* Password. */
-	    pjsip_PASSWD_SPEC_ESC,	/* Variant without escaped char */
-	    pjsip_USER_SPEC,	        /* User */
-	    pjsip_USER_SPEC_ESC,	/* Variant without escaped char */
-	    pjsip_USER_SPEC_LENIENT,	/* User, with additional '#' char */
-	    pjsip_USER_SPEC_LENIENT_ESC,
-	    pjsip_NOT_COMMA_OR_NEWLINE, /* Array separator. */
-	    pjsip_NOT_NEWLINE,		/* For eating up header.*/
-	    pjsip_DISPLAY_SPEC;         /* Used when searching for display name
-                                         * in URL. */
 
 
@@ -244,8 +223,15 @@
 }
 
+/* Get parser constants. */
+PJ_DEF(const pjsip_parser_const_t*) pjsip_parser_const(void)
+{
+    return &pconst;
+}
+
 /* Concatenate unrecognized params into single string. */
-void pjsip_concat_param_imp( pj_str_t *param, pj_pool_t *pool, 
-			     const pj_str_t *pname, const pj_str_t *pvalue, 
-                             int sepchar)
+PJ_DEF(void) pjsip_concat_param_imp(pj_str_t *param, pj_pool_t *pool, 
+			     	    const pj_str_t *pname, 
+				    const pj_str_t *pvalue, 
+                             	    int sepchar)
 {
     char *new_param, *p;
@@ -301,92 +287,92 @@
     pj_cis_buf_init(&cis_buf);
 
-    status = pj_cis_init(&cis_buf, &pjsip_DIGIT_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_num(&pjsip_DIGIT_SPEC);
+    status = pj_cis_init(&cis_buf, &pconst.pjsip_DIGIT_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_num(&pconst.pjsip_DIGIT_SPEC);
     
-    status = pj_cis_init(&cis_buf, &pjsip_ALPHA_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_alpha( &pjsip_ALPHA_SPEC );
+    status = pj_cis_init(&cis_buf, &pconst.pjsip_ALPHA_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_alpha( &pconst.pjsip_ALPHA_SPEC );
     
-    status = pj_cis_init(&cis_buf, &pjsip_ALNUM_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_alpha( &pjsip_ALNUM_SPEC );
-    pj_cis_add_num( &pjsip_ALNUM_SPEC );
-
-    status = pj_cis_init(&cis_buf, &pjsip_NOT_NEWLINE);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_str(&pjsip_NOT_NEWLINE, "\r\n");
-    pj_cis_invert(&pjsip_NOT_NEWLINE);
-
-    status = pj_cis_init(&cis_buf, &pjsip_NOT_COMMA_OR_NEWLINE);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_str( &pjsip_NOT_COMMA_OR_NEWLINE, ",\r\n");
-    pj_cis_invert(&pjsip_NOT_COMMA_OR_NEWLINE);
-
-    status = pj_cis_dup(&pjsip_TOKEN_SPEC, &pjsip_ALNUM_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_str( &pjsip_TOKEN_SPEC, TOKEN);
-
-    status = pj_cis_dup(&pjsip_TOKEN_SPEC_ESC, &pjsip_TOKEN_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_del_str(&pjsip_TOKEN_SPEC_ESC, "%");
-
-    status = pj_cis_dup(&pjsip_HOST_SPEC, &pjsip_ALNUM_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_str( &pjsip_HOST_SPEC, HOST);
-
-    status = pj_cis_dup(&pjsip_HEX_SPEC, &pjsip_DIGIT_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_str( &pjsip_HEX_SPEC, HEX_DIGIT);
-
-    status = pj_cis_dup(&pjsip_PARAM_CHAR_SPEC, &pjsip_ALNUM_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_str(&pjsip_PARAM_CHAR_SPEC, PARAM_CHAR);
-
-    status = pj_cis_dup(&pjsip_PARAM_CHAR_SPEC_ESC, &pjsip_PARAM_CHAR_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_del_str(&pjsip_PARAM_CHAR_SPEC_ESC, ESCAPED);
-
-    status = pj_cis_dup(&pjsip_HDR_CHAR_SPEC, &pjsip_ALNUM_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_str(&pjsip_HDR_CHAR_SPEC, HDR_CHAR);
-
-    status = pj_cis_dup(&pjsip_HDR_CHAR_SPEC_ESC, &pjsip_HDR_CHAR_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_del_str(&pjsip_HDR_CHAR_SPEC_ESC, ESCAPED);
-
-    status = pj_cis_dup(&pjsip_USER_SPEC, &pjsip_ALNUM_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_str( &pjsip_USER_SPEC, UNRESERVED ESCAPED USER_UNRESERVED );
-
-    status = pj_cis_dup(&pjsip_USER_SPEC_ESC, &pjsip_USER_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_del_str( &pjsip_USER_SPEC_ESC, ESCAPED);
-
-    status = pj_cis_dup(&pjsip_USER_SPEC_LENIENT, &pjsip_USER_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_str(&pjsip_USER_SPEC_LENIENT, "#");
-
-    status = pj_cis_dup(&pjsip_USER_SPEC_LENIENT_ESC, &pjsip_USER_SPEC_ESC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_str(&pjsip_USER_SPEC_LENIENT_ESC, "#");
-
-    status = pj_cis_dup(&pjsip_PASSWD_SPEC, &pjsip_ALNUM_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_str( &pjsip_PASSWD_SPEC, UNRESERVED ESCAPED PASS);
-
-    status = pj_cis_dup(&pjsip_PASSWD_SPEC_ESC, &pjsip_PASSWD_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_del_str( &pjsip_PASSWD_SPEC_ESC, ESCAPED);
-
-    status = pj_cis_init(&cis_buf, &pjsip_PROBE_USER_HOST_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_str( &pjsip_PROBE_USER_HOST_SPEC, "@ \n>");
-    pj_cis_invert( &pjsip_PROBE_USER_HOST_SPEC );
-
-    status = pj_cis_init(&cis_buf, &pjsip_DISPLAY_SPEC);
-    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-    pj_cis_add_str( &pjsip_DISPLAY_SPEC, ":\r\n<");
-    pj_cis_invert(&pjsip_DISPLAY_SPEC);
+    status = pj_cis_init(&cis_buf, &pconst.pjsip_ALNUM_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_alpha( &pconst.pjsip_ALNUM_SPEC );
+    pj_cis_add_num( &pconst.pjsip_ALNUM_SPEC );
+
+    status = pj_cis_init(&cis_buf, &pconst.pjsip_NOT_NEWLINE);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_str(&pconst.pjsip_NOT_NEWLINE, "\r\n");
+    pj_cis_invert(&pconst.pjsip_NOT_NEWLINE);
+
+    status = pj_cis_init(&cis_buf, &pconst.pjsip_NOT_COMMA_OR_NEWLINE);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_str( &pconst.pjsip_NOT_COMMA_OR_NEWLINE, ",\r\n");
+    pj_cis_invert(&pconst.pjsip_NOT_COMMA_OR_NEWLINE);
+
+    status = pj_cis_dup(&pconst.pjsip_TOKEN_SPEC, &pconst.pjsip_ALNUM_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_str( &pconst.pjsip_TOKEN_SPEC, TOKEN);
+
+    status = pj_cis_dup(&pconst.pjsip_TOKEN_SPEC_ESC, &pconst.pjsip_TOKEN_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_del_str(&pconst.pjsip_TOKEN_SPEC_ESC, "%");
+
+    status = pj_cis_dup(&pconst.pjsip_HOST_SPEC, &pconst.pjsip_ALNUM_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_str( &pconst.pjsip_HOST_SPEC, HOST);
+
+    status = pj_cis_dup(&pconst.pjsip_HEX_SPEC, &pconst.pjsip_DIGIT_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_str( &pconst.pjsip_HEX_SPEC, HEX_DIGIT);
+
+    status = pj_cis_dup(&pconst.pjsip_PARAM_CHAR_SPEC, &pconst.pjsip_ALNUM_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_str(&pconst.pjsip_PARAM_CHAR_SPEC, PARAM_CHAR);
+
+    status = pj_cis_dup(&pconst.pjsip_PARAM_CHAR_SPEC_ESC, &pconst.pjsip_PARAM_CHAR_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_del_str(&pconst.pjsip_PARAM_CHAR_SPEC_ESC, ESCAPED);
+
+    status = pj_cis_dup(&pconst.pjsip_HDR_CHAR_SPEC, &pconst.pjsip_ALNUM_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_str(&pconst.pjsip_HDR_CHAR_SPEC, HDR_CHAR);
+
+    status = pj_cis_dup(&pconst.pjsip_HDR_CHAR_SPEC_ESC, &pconst.pjsip_HDR_CHAR_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_del_str(&pconst.pjsip_HDR_CHAR_SPEC_ESC, ESCAPED);
+
+    status = pj_cis_dup(&pconst.pjsip_USER_SPEC, &pconst.pjsip_ALNUM_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_str( &pconst.pjsip_USER_SPEC, UNRESERVED ESCAPED USER_UNRESERVED );
+
+    status = pj_cis_dup(&pconst.pjsip_USER_SPEC_ESC, &pconst.pjsip_USER_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_del_str( &pconst.pjsip_USER_SPEC_ESC, ESCAPED);
+
+    status = pj_cis_dup(&pconst.pjsip_USER_SPEC_LENIENT, &pconst.pjsip_USER_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_str(&pconst.pjsip_USER_SPEC_LENIENT, "#");
+
+    status = pj_cis_dup(&pconst.pjsip_USER_SPEC_LENIENT_ESC, &pconst.pjsip_USER_SPEC_ESC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_str(&pconst.pjsip_USER_SPEC_LENIENT_ESC, "#");
+
+    status = pj_cis_dup(&pconst.pjsip_PASSWD_SPEC, &pconst.pjsip_ALNUM_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_str( &pconst.pjsip_PASSWD_SPEC, UNRESERVED ESCAPED PASS);
+
+    status = pj_cis_dup(&pconst.pjsip_PASSWD_SPEC_ESC, &pconst.pjsip_PASSWD_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_del_str( &pconst.pjsip_PASSWD_SPEC_ESC, ESCAPED);
+
+    status = pj_cis_init(&cis_buf, &pconst.pjsip_PROBE_USER_HOST_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_str( &pconst.pjsip_PROBE_USER_HOST_SPEC, "@ \n>");
+    pj_cis_invert( &pconst.pjsip_PROBE_USER_HOST_SPEC );
+
+    status = pj_cis_init(&cis_buf, &pconst.pjsip_DISPLAY_SPEC);
+    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
+    pj_cis_add_str( &pconst.pjsip_DISPLAY_SPEC, ":\r\n<");
+    pj_cis_invert(&pconst.pjsip_DISPLAY_SPEC);
 
     /*
@@ -818,5 +804,5 @@
 
 		/* Get number */
-		pj_scan_get(&scanner, &pjsip_DIGIT_SPEC, &str_clen);
+		pj_scan_get(&scanner, &pconst.pjsip_DIGIT_SPEC, &str_clen);
 
 		/* Get newline. */
@@ -960,5 +946,5 @@
 	    
 	    /* Get hname. */
-	    pj_scan_get( scanner, &pjsip_TOKEN_SPEC, &hname);
+	    pj_scan_get( scanner, &pconst.pjsip_TOKEN_SPEC, &hname);
 	    if (pj_scan_get_char( scanner ) != ':') {
 		PJ_THROW(PJSIP_SYN_ERR_EXCEPTION);
@@ -1110,20 +1096,20 @@
 
 /* Parse parameter (pname ["=" pvalue]) using token. */
-void pjsip_parse_param_imp(  pj_scanner *scanner, pj_pool_t *pool,
-			     pj_str_t *pname, pj_str_t *pvalue,
-			     unsigned option)
-{
-    parse_param_imp(scanner, pool, pname, pvalue, &pjsip_TOKEN_SPEC,
-		    &pjsip_TOKEN_SPEC_ESC, option);
+PJ_DEF(void) pjsip_parse_param_imp(pj_scanner *scanner, pj_pool_t *pool,
+			     	   pj_str_t *pname, pj_str_t *pvalue,
+			     	   unsigned option)
+{
+    parse_param_imp(scanner, pool, pname, pvalue, &pconst.pjsip_TOKEN_SPEC,
+		    &pconst.pjsip_TOKEN_SPEC_ESC, option);
 }
 
 
 /* Parse parameter (pname ["=" pvalue]) using paramchar. */
-void pjsip_parse_uri_param_imp(pj_scanner *scanner, pj_pool_t *pool,
-			       pj_str_t *pname, pj_str_t *pvalue,
-			       unsigned option)
-{
-    parse_param_imp(scanner, pool, pname, pvalue, &pjsip_PARAM_CHAR_SPEC,
-		    &pjsip_PARAM_CHAR_SPEC_ESC, option);
+PJ_DEF(void) pjsip_parse_uri_param_imp( pj_scanner *scanner, pj_pool_t *pool,
+			       		pj_str_t *pname, pj_str_t *pvalue,
+			       		unsigned option)
+{
+    parse_param_imp(scanner,pool, pname, pvalue, &pconst.pjsip_PARAM_CHAR_SPEC,
+		    &pconst.pjsip_PARAM_CHAR_SPEC_ESC, option);
 }
 
@@ -1163,6 +1149,6 @@
 
     /* hname */
-    parser_get_and_unescape(scanner, pool, &pjsip_HDR_CHAR_SPEC, 
-			    &pjsip_HDR_CHAR_SPEC_ESC, hname);
+    parser_get_and_unescape(scanner, pool, &pconst.pjsip_HDR_CHAR_SPEC, 
+			    &pconst.pjsip_HDR_CHAR_SPEC_ESC, hname);
 
     /* Init hvalue */
@@ -1174,8 +1160,8 @@
 	pj_scan_get_char(scanner);
 	if (!pj_scan_is_eof(scanner) && 
-	    pj_cis_match(&pjsip_HDR_CHAR_SPEC, *scanner->curptr))
+	    pj_cis_match(&pconst.pjsip_HDR_CHAR_SPEC, *scanner->curptr))
 	{
-	    parser_get_and_unescape(scanner, pool, &pjsip_HDR_CHAR_SPEC,
-				    &pjsip_HDR_CHAR_SPEC_ESC, hvalue);
+	    parser_get_and_unescape(scanner, pool, &pconst.pjsip_HDR_CHAR_SPEC,
+				    &pconst.pjsip_HDR_CHAR_SPEC_ESC, hvalue);
 	}
     }
@@ -1186,10 +1172,10 @@
 				     pj_str_t *host, int *p_port)
 {
-    pj_scan_get( scanner, &pjsip_HOST_SPEC, host);
+    pj_scan_get( scanner, &pconst.pjsip_HOST_SPEC, host);
     /* RFC3261 section 19.1.2: host don't need to be unescaped */
     if (*scanner->curptr == ':') {
 	pj_str_t port;
 	pj_scan_get_char(scanner);
-	pj_scan_get(scanner, &pjsip_DIGIT_SPEC, &port);
+	pj_scan_get(scanner, &pconst.pjsip_DIGIT_SPEC, &port);
 	*p_port = pj_strtoul(&port);
     } else {
@@ -1207,5 +1193,5 @@
      * must be a username.
      */
-    if (pj_scan_peek( scanner, &pjsip_PROBE_USER_HOST_SPEC, &dummy) == '@')
+    if (pj_scan_peek( scanner, &pconst.pjsip_PROBE_USER_HOST_SPEC, &dummy) == '@')
 	is_user = 1;
     else
@@ -1219,11 +1205,11 @@
 				 pj_str_t *user, pj_str_t *pass)
 {
-    parser_get_and_unescape(scanner, pool, &pjsip_USER_SPEC_LENIENT, 
-			    &pjsip_USER_SPEC_LENIENT_ESC, user);
+    parser_get_and_unescape(scanner, pool, &pconst.pjsip_USER_SPEC_LENIENT, 
+			    &pconst.pjsip_USER_SPEC_LENIENT_ESC, user);
 
     if ( *scanner->curptr == ':') {
 	pj_scan_get_char( scanner );
-	parser_get_and_unescape(scanner, pool, &pjsip_PASSWD_SPEC,
-				&pjsip_PASSWD_SPEC_ESC, pass);
+	parser_get_and_unescape(scanner, pool, &pconst.pjsip_PASSWD_SPEC,
+				&pconst.pjsip_PASSWD_SPEC_ESC, pass);
     } else {
 	pass->ptr = NULL;
@@ -1252,5 +1238,5 @@
 	int next_ch;
 
-	next_ch = pj_scan_peek( scanner, &pjsip_DISPLAY_SPEC, &scheme);
+	next_ch = pj_scan_peek( scanner, &pconst.pjsip_DISPLAY_SPEC, &scheme);
 
 	if (next_ch==':') {
@@ -1305,5 +1291,5 @@
 
 	/* Get scheme. */
-	colon = pj_scan_peek(scanner, &pjsip_TOKEN_SPEC, &scheme);
+	colon = pj_scan_peek(scanner, &pconst.pjsip_TOKEN_SPEC, &scheme);
 	if (colon != ':') {
 	    PJ_THROW(PJSIP_SYN_ERR_EXCEPTION);
@@ -1338,5 +1324,5 @@
     scanner->skip_ws = 0;
 
-    pj_scan_get(scanner, &pjsip_TOKEN_SPEC, &scheme);
+    pj_scan_get(scanner, &pconst.pjsip_TOKEN_SPEC, &scheme);
     colon = pj_scan_get_char(scanner);
     if (colon != ':') {
@@ -1344,8 +1330,8 @@
     }
 
-    if (parser_stricmp(scheme, pjsip_SIP_STR)==0) {
+    if (parser_stricmp(scheme, pconst.pjsip_SIP_STR)==0) {
 	url = pjsip_sip_uri_create(pool, 0);
 
-    } else if (parser_stricmp(scheme, pjsip_SIPS_STR)==0) {
+    } else if (parser_stricmp(scheme, pconst.pjsip_SIPS_STR)==0) {
 	url = pjsip_sip_uri_create(pool, 1);
 
@@ -1373,20 +1359,20 @@
 	int_parse_uri_param( scanner, pool, &pname, &pvalue, 0);
 
-	if (!parser_stricmp(pname, pjsip_USER_STR) && pvalue.slen) {
+	if (!parser_stricmp(pname, pconst.pjsip_USER_STR) && pvalue.slen) {
 	    url->user_param = pvalue;
 
-	} else if (!parser_stricmp(pname, pjsip_METHOD_STR) && pvalue.slen) {
+	} else if (!parser_stricmp(pname, pconst.pjsip_METHOD_STR) && pvalue.slen) {
 	    url->method_param = pvalue;
 
-	} else if (!parser_stricmp(pname,pjsip_TRANSPORT_STR) && pvalue.slen) {
+	} else if (!parser_stricmp(pname, pconst.pjsip_TRANSPORT_STR) && pvalue.slen) {
 	    url->transport_param = pvalue;
 
-	} else if (!parser_stricmp(pname, pjsip_TTL_STR) && pvalue.slen) {
+	} else if (!parser_stricmp(pname, pconst.pjsip_TTL_STR) && pvalue.slen) {
 	    url->ttl_param = pj_strtoul(&pvalue);
 
-	} else if (!parser_stricmp(pname, pjsip_MADDR_STR) && pvalue.slen) {
+	} else if (!parser_stricmp(pname, pconst.pjsip_MADDR_STR) && pvalue.slen) {
 	    url->maddr_param = pvalue;
 
-	} else if (!parser_stricmp(pname, pjsip_LR_STR)) {
+	} else if (!parser_stricmp(pname, pconst.pjsip_LR_STR)) {
 	    url->lr_param = 1;
 
@@ -1439,5 +1425,5 @@
 	 * will be parser later.
 	 */
-	next = pj_scan_peek(scanner, &pjsip_DISPLAY_SPEC, &dummy);
+	next = pj_scan_peek(scanner, &pconst.pjsip_DISPLAY_SPEC, &dummy);
 	if (next == '<') {
 	    /* Ok, this is what we're looking for, a display name. */
@@ -1470,5 +1456,5 @@
     pj_str_t token;
 
-    pj_scan_get( scanner, &pjsip_TOKEN_SPEC, &token);
+    pj_scan_get( scanner, &pconst.pjsip_TOKEN_SPEC, &token);
     pjsip_method_init_np( &req_line->method, &token);
 
@@ -1490,7 +1476,7 @@
     pj_scan_advance_n( scanner, 7, 1);
 
-    pj_scan_get( scanner, &pjsip_DIGIT_SPEC, &token);
+    pj_scan_get( scanner, &pconst.pjsip_DIGIT_SPEC, &token);
     status_line->code = pj_strtoul(&token);
-    pj_scan_get( scanner, &pjsip_NOT_NEWLINE, &status_line->reason);
+    pj_scan_get( scanner, &pconst.pjsip_NOT_NEWLINE, &status_line->reason);
     pj_scan_get_newline( scanner );
 }
@@ -1539,5 +1525,5 @@
 
 /* Parse ending of header. */
-void pjsip_parse_end_hdr_imp( pj_scanner *scanner )
+PJ_DEF(void) pjsip_parse_end_hdr_imp( pj_scanner *scanner )
 {
     parse_hdr_end(scanner);
@@ -1557,10 +1543,10 @@
     }
 
-    pj_scan_get( scanner, &pjsip_NOT_COMMA_OR_NEWLINE, &hdr->values[0]);
+    pj_scan_get( scanner, &pconst.pjsip_NOT_COMMA_OR_NEWLINE, &hdr->values[0]);
     hdr->count++;
 
     while (*scanner->curptr == ',') {
 	pj_scan_get_char(scanner);
-	pj_scan_get( scanner, &pjsip_NOT_COMMA_OR_NEWLINE, 
+	pj_scan_get( scanner, &pconst.pjsip_NOT_COMMA_OR_NEWLINE, 
 		     &hdr->values[hdr->count]);
 	hdr->count++;
@@ -1578,6 +1564,6 @@
 				      pj_scanner *scanner )
 {
-    if (pj_cis_match(&pjsip_NOT_NEWLINE, *scanner->curptr))
-	pj_scan_get( scanner, &pjsip_NOT_NEWLINE, &hdr->hvalue);
+    if (pj_cis_match(&pconst.pjsip_NOT_NEWLINE, *scanner->curptr))
+	pj_scan_get( scanner, &pconst.pjsip_NOT_NEWLINE, &hdr->hvalue);
     else
 	hdr->hvalue.slen = 0;
@@ -1591,5 +1577,5 @@
 {
     pj_str_t tmp;
-    pj_scan_get( scanner, &pjsip_DIGIT_SPEC, &tmp);
+    pj_scan_get( scanner, &pconst.pjsip_DIGIT_SPEC, &tmp);
     hdr->ivalue = pj_strtoul(&tmp);
     parse_hdr_end(scanner);
@@ -1617,5 +1603,5 @@
 {
     pjsip_cid_hdr *hdr = pjsip_cid_hdr_create(ctx->pool);
-    pj_scan_get( ctx->scanner, &pjsip_NOT_NEWLINE, &hdr->id);
+    pj_scan_get( ctx->scanner, &pconst.pjsip_NOT_NEWLINE, &hdr->id);
     parse_hdr_end(ctx->scanner);
 
@@ -1635,5 +1621,5 @@
 
 	int_parse_param( scanner, pool, &pname, &pvalue, 0);
-	if (!parser_stricmp(pname, pjsip_Q_STR) && pvalue.slen) {
+	if (!parser_stricmp(pname, pconst.pjsip_Q_STR) && pvalue.slen) {
 	    char *dot_pos = (char*) pj_memchr(pvalue.ptr, '.', pvalue.slen);
 	    if (!dot_pos) {
@@ -1644,5 +1630,5 @@
 		hdr->q1000 = pj_strtoul_mindigit(&pvalue, 3);
 	    }    
-	} else if (!parser_stricmp(pname, pjsip_EXPIRES_STR) && pvalue.slen) {
+	} else if (!parser_stricmp(pname, pconst.pjsip_EXPIRES_STR) && pvalue.slen) {
 	    hdr->expires = pj_strtoul(&pvalue);
 
@@ -1701,5 +1687,5 @@
 
     hdr = pjsip_clen_hdr_create(ctx->pool);
-    pj_scan_get(ctx->scanner, &pjsip_DIGIT_SPEC, &digit);
+    pj_scan_get(ctx->scanner, &pconst.pjsip_DIGIT_SPEC, &digit);
     hdr->len = pj_strtoul(&digit);
     parse_hdr_end(ctx->scanner);
@@ -1720,7 +1706,7 @@
     
     /* Parse media type and subtype. */
-    pj_scan_get(scanner, &pjsip_TOKEN_SPEC, &hdr->media.type);
+    pj_scan_get(scanner, &pconst.pjsip_TOKEN_SPEC, &hdr->media.type);
     pj_scan_get_char(scanner);
-    pj_scan_get(scanner, &pjsip_TOKEN_SPEC, &hdr->media.subtype);
+    pj_scan_get(scanner, &pconst.pjsip_TOKEN_SPEC, &hdr->media.subtype);
 
     /* Parse media parameters */
@@ -1746,8 +1732,8 @@
 
     hdr = pjsip_cseq_hdr_create(ctx->pool);
-    pj_scan_get( ctx->scanner, &pjsip_DIGIT_SPEC, &cseq);
+    pj_scan_get( ctx->scanner, &pconst.pjsip_DIGIT_SPEC, &cseq);
     hdr->cseq = pj_strtoul(&cseq);
 
-    pj_scan_get( ctx->scanner, &pjsip_TOKEN_SPEC, &method);
+    pj_scan_get( ctx->scanner, &pconst.pjsip_TOKEN_SPEC, &method);
     pjsip_method_init_np(&hdr->method, &method);
 
@@ -1782,5 +1768,5 @@
 	int_parse_param( scanner, pool, &pname, &pvalue, 0);
 
-	if (!parser_stricmp(pname, pjsip_TAG_STR)) {
+	if (!parser_stricmp(pname, pconst.pjsip_TAG_STR)) {
 	    hdr->tag = pvalue;
 	    
@@ -1866,17 +1852,17 @@
 	int_parse_param( scanner, pool, &pname, &pvalue, 0);
 
-	if (!parser_stricmp(pname, pjsip_BRANCH_STR) && pvalue.slen) {
+	if (!parser_stricmp(pname, pconst.pjsip_BRANCH_STR) && pvalue.slen) {
 	    hdr->branch_param = pvalue;
 
-	} else if (!parser_stricmp(pname, pjsip_TTL_STR) && pvalue.slen) {
+	} else if (!parser_stricmp(pname, pconst.pjsip_TTL_STR) && pvalue.slen) {
 	    hdr->ttl_param = pj_strtoul(&pvalue);
 	    
-	} else if (!parser_stricmp(pname, pjsip_MADDR_STR) && pvalue.slen) {
+	} else if (!parser_stricmp(pname, pconst.pjsip_MADDR_STR) && pvalue.slen) {
 	    hdr->maddr_param = pvalue;
 
-	} else if (!parser_stricmp(pname, pjsip_RECEIVED_STR) && pvalue.slen) {
+	} else if (!parser_stricmp(pname, pconst.pjsip_RECEIVED_STR) && pvalue.slen) {
 	    hdr->recvd_param = pvalue;
 
-	} else if (!parser_stricmp(pname, pjsip_RPORT_STR)) {
+	} else if (!parser_stricmp(pname, pconst.pjsip_RPORT_STR)) {
 	    if (pvalue.slen)
 		hdr->rport_param = pj_strtoul(&pvalue);
@@ -2004,11 +1990,11 @@
 	pj_scan_advance_n( scanner, 8, 1);
 
-	pj_scan_get( scanner, &pjsip_TOKEN_SPEC, &hdr->transport);
-	pj_scan_get( scanner, &pjsip_HOST_SPEC, &hdr->sent_by.host);
+	pj_scan_get( scanner, &pconst.pjsip_TOKEN_SPEC, &hdr->transport);
+	pj_scan_get( scanner, &pconst.pjsip_HOST_SPEC, &hdr->sent_by.host);
 
 	if (*scanner->curptr==':') {
 	    pj_str_t digit;
 	    pj_scan_get_char(scanner);
-	    pj_scan_get(scanner, &pjsip_DIGIT_SPEC, &digit);
+	    pj_scan_get(scanner, &pconst.pjsip_DIGIT_SPEC, &digit);
 	    hdr->sent_by.port = pj_strtoul(&digit);
 	}
Index: pjproject/trunk/pjsip/src/pjsip/sip_tel_uri.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip/sip_tel_uri.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip/sip_tel_uri.c	(revision 1417)
@@ -106,5 +106,5 @@
 {
     PJ_UNUSED_ARG(uri);
-    return &pjsip_TEL_STR;
+    return &pjsip_parser_const()->pjsip_TEL_STR;
 }
 
@@ -183,9 +183,10 @@
     char *startbuf = buf;
     char *endbuf = buf+size;
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
 
     PJ_UNUSED_ARG(context);
 
     /* Print scheme. */
-    copy_advance(buf, pjsip_TEL_STR);
+    copy_advance(buf, pc->pjsip_TEL_STR);
     *buf++ = ':';
 
@@ -371,12 +372,13 @@
     pj_str_t token;
     int skip_ws = scanner->skip_ws;
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
 
     scanner->skip_ws = 0;
 
     /* Parse scheme. */
-    pj_scan_get(scanner, &pjsip_TOKEN_SPEC, &token);
+    pj_scan_get(scanner, &pc->pjsip_TOKEN_SPEC, &token);
     if (pj_scan_get_char(scanner) != ':')
 	PJ_THROW(PJSIP_SYN_ERR_EXCEPTION);
-    if (pj_stricmp_alnum(&token, &pjsip_TEL_STR) != 0)
+    if (pj_stricmp_alnum(&token, &pc->pjsip_TEL_STR) != 0)
 	PJ_THROW(PJSIP_SYN_ERR_EXCEPTION);
 
@@ -395,4 +397,5 @@
     if (parse_params && *scanner->curptr==';') {
 	pj_str_t pname, pvalue;
+	const pjsip_parser_const_t *pc = pjsip_parser_const();
 
 	do {
@@ -401,5 +404,5 @@
 
 	    /* Get pname. */
-	    pj_scan_get(scanner, &pjsip_PARAM_CHAR_SPEC, &pname);
+	    pj_scan_get(scanner, &pc->pjsip_PARAM_CHAR_SPEC, &pname);
 
 	    if (*scanner->curptr == '=') {
@@ -407,7 +410,7 @@
 
 #		if defined(PJSIP_UNESCAPE_IN_PLACE) && PJSIP_UNESCAPE_IN_PLACE!=0
-		    pj_scan_get_unescape( scanner, 
-					  &pjsip_TEL_PARSING_PVALUE_SPEC_ESC,
-					  &pvalue);
+		    pj_scan_get_unescape(scanner, 
+					 &pjsip_TEL_PARSING_PVALUE_SPEC_ESC,
+					 &pvalue);
 #		else
 		    pj_scan_get(scanner, &pjsip_TEL_PARSING_PVALUE_SPEC, 
Index: pjproject/trunk/pjsip/src/pjsip/sip_transport.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip/sip_transport.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip/sip_transport.c	(revision 1417)
@@ -114,5 +114,5 @@
  * Register new transport type to PJSIP.
  */
-PJ_DECL(pj_status_t) pjsip_transport_register_type(unsigned tp_flag,
+PJ_DEF(pj_status_t) pjsip_transport_register_type( unsigned tp_flag,
 						   const char *tp_name,
 						   int def_port,
@@ -150,6 +150,5 @@
  * Get transport type from name.
  */
-PJ_DEF(pjsip_transport_type_e) 
-pjsip_transport_get_type_from_name(const pj_str_t *name)
+PJ_DEF(pjsip_transport_type_e) pjsip_transport_get_type_from_name(const pj_str_t *name)
 {
     unsigned i;
@@ -179,6 +178,5 @@
  * Get the transport type for the specified flags.
  */
-PJ_DEF(pjsip_transport_type_e) 
-pjsip_transport_get_type_from_flag(unsigned flag)
+PJ_DEF(pjsip_transport_type_e) pjsip_transport_get_type_from_flag(unsigned flag)
 {
     unsigned i;
@@ -201,6 +199,5 @@
 }
 
-PJ_DEF(unsigned)
-pjsip_transport_get_flag_from_type( pjsip_transport_type_e type )
+PJ_DEF(unsigned) pjsip_transport_get_flag_from_type(pjsip_transport_type_e type)
 {
     /* Sanity check. 
@@ -220,6 +217,5 @@
  * Get the default SIP port number for the specified type.
  */
-PJ_DEF(int) 
-pjsip_transport_get_default_port_for_type(pjsip_transport_type_e type)
+PJ_DEF(int) pjsip_transport_get_default_port_for_type(pjsip_transport_type_e type)
 {
     /* Sanity check. 
Index: pjproject/trunk/pjsip/src/pjsip/sip_ua_layer.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip/sip_ua_layer.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip/sip_ua_layer.c	(revision 1417)
@@ -237,4 +237,5 @@
  * Create key to identify dialog set.
  */
+/*
 PJ_DEF(void) pjsip_ua_create_dlg_set_key( pj_pool_t *pool,
 					  pj_str_t *set_key,
@@ -253,4 +254,5 @@
 	      local_tag->ptr, local_tag->slen);
 }
+*/
 
 /*
@@ -512,5 +514,5 @@
 
 	pjsip_tsx_create_key(rdata->tp_info.pool, &key, role, 
-			     &pjsip_invite_method, rdata);
+			     pjsip_get_invite_method(), rdata);
 
 	/* Lookup the INVITE transaction */
Index: pjproject/trunk/pjsip/src/pjsip/sip_uri.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip/sip_uri.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip/sip_uri.c	(revision 1417)
@@ -244,4 +244,5 @@
     char *endbuf = buf+size;
     const pj_str_t *scheme;
+    const pjsip_parser_const_t *pc = pjsip_parser_const();
 
     *buf = '\0';
@@ -254,8 +255,8 @@
     /* Print "user:password@", if any. */
     if (url->user.slen) {
-	copy_advance_escape(buf, url->user, pjsip_USER_SPEC);
+	copy_advance_escape(buf, url->user, pc->pjsip_USER_SPEC);
 	if (url->passwd.slen) {
 	    *buf++ = ':';
-	    copy_advance_escape(buf, url->passwd, pjsip_PASSWD_SPEC);
+	    copy_advance_escape(buf, url->passwd, pc->pjsip_PASSWD_SPEC);
 	}
 
@@ -290,5 +291,5 @@
     if (context == PJSIP_URI_IN_OTHER) {
 	copy_advance_pair_escape(buf, ";method=", 8, url->method_param, 
-				 pjsip_PARAM_CHAR_SPEC);
+				 pc->pjsip_PARAM_CHAR_SPEC);
     }
 
@@ -296,5 +297,5 @@
     if (context != PJSIP_URI_IN_FROMTO_HDR) {
 	copy_advance_pair_escape(buf, ";transport=", 11, url->transport_param,
-				 pjsip_PARAM_CHAR_SPEC);
+				 pc->pjsip_PARAM_CHAR_SPEC);
     }
 
@@ -313,5 +314,5 @@
     if (context != PJSIP_URI_IN_FROMTO_HDR) {
 	copy_advance_pair_escape(buf, ";maddr=", 7, url->maddr_param,
-				 pjsip_PARAM_CHAR_SPEC);
+				 pc->pjsip_PARAM_CHAR_SPEC);
     }
 
@@ -328,6 +329,6 @@
     /* Other param. */
     printed = pjsip_param_print_on(&url->other_param, buf, endbuf-buf, 
-				   &pjsip_PARAM_CHAR_SPEC, 
-				   &pjsip_PARAM_CHAR_SPEC, ';');
+				   &pc->pjsip_PARAM_CHAR_SPEC, 
+				   &pc->pjsip_PARAM_CHAR_SPEC, ';');
     if (printed < 0)
 	return -1;
@@ -341,6 +342,6 @@
     if (context == PJSIP_URI_IN_CONTACT_HDR || context == PJSIP_URI_IN_OTHER) {
 	printed = pjsip_param_print_on(&url->header_param, buf, endbuf-buf,
-				       &pjsip_HDR_CHAR_SPEC, 
-				       &pjsip_HDR_CHAR_SPEC, '?');
+				       &pc->pjsip_HDR_CHAR_SPEC, 
+				       &pc->pjsip_HDR_CHAR_SPEC, '?');
 	if (printed < 0)
 	    return -1;
Index: pjproject/trunk/pjsip/src/pjsip/sip_util.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsip/sip_util.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsip/sip_util.c	(revision 1417)
@@ -262,6 +262,5 @@
 }
 
-PJ_DEF(pj_status_t)
-pjsip_endpt_create_request_from_hdr( pjsip_endpoint *endpt,
+PJ_DEF(pj_status_t) pjsip_endpt_create_request_from_hdr( pjsip_endpoint *endpt,
 				     const pjsip_method *method,
 				     const pjsip_uri *param_target,
@@ -485,5 +484,5 @@
     /* Create new request message from the headers. */
     status = pjsip_endpt_create_request_from_hdr(endpt, 
-						 &pjsip_ack_method,
+						 pjsip_get_ack_method(),
 						 tdata->msg->line.req.uri,
 						 from_hdr, to_hdr,
@@ -576,5 +575,5 @@
     /* Create new request message from the headers. */
     status = pjsip_endpt_create_request_from_hdr(endpt, 
-						 &pjsip_cancel_method,
+						 pjsip_get_cancel_method(),
 						 req_tdata->msg->line.req.uri,
 						 from_hdr, to_hdr,
@@ -993,6 +992,5 @@
  *  - send the message (#pjsip_transport_send)
  */
-PJ_DEF(pj_status_t) 
-pjsip_endpt_send_request_stateless(pjsip_endpoint *endpt, 
+PJ_DEF(pj_status_t) pjsip_endpt_send_request_stateless(pjsip_endpoint *endpt, 
 				   pjsip_tx_data *tdata,
 				   void *token,
Index: pjproject/trunk/pjsip/src/pjsua-lib/pjsua_call.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsua-lib/pjsua_call.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsua-lib/pjsua_call.c	(revision 1417)
@@ -2772,5 +2772,5 @@
     if (tsx->role==PJSIP_ROLE_UAS &&
 	tsx->state==PJSIP_TSX_STATE_TRYING &&
-	pjsip_method_cmp(&tsx->method, &pjsip_refer_method)==0)
+	pjsip_method_cmp(&tsx->method, pjsip_get_refer_method())==0)
     {
 	/*
Index: pjproject/trunk/pjsip/src/pjsua-lib/pjsua_core.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsua-lib/pjsua_core.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsua-lib/pjsua_core.c	(revision 1417)
@@ -55,4 +55,111 @@
 
 
+PJ_DEF(void) pjsua_logging_config_default(pjsua_logging_config *cfg)
+{
+    pj_bzero(cfg, sizeof(*cfg));
+
+    cfg->msg_logging = PJ_TRUE;
+    cfg->level = 5;
+    cfg->console_level = 4;
+    cfg->decor = PJ_LOG_HAS_SENDER | PJ_LOG_HAS_TIME | 
+		 PJ_LOG_HAS_MICRO_SEC | PJ_LOG_HAS_NEWLINE;
+}
+
+PJ_DEF(void) pjsua_logging_config_dup(pj_pool_t *pool,
+				      pjsua_logging_config *dst,
+				      const pjsua_logging_config *src)
+{
+    pj_memcpy(dst, src, sizeof(*src));
+    pj_strdup_with_null(pool, &dst->log_filename, &src->log_filename);
+}
+
+PJ_DEF(void) pjsua_config_default(pjsua_config *cfg)
+{
+    pj_bzero(cfg, sizeof(*cfg));
+
+    cfg->max_calls = 4;
+    cfg->thread_cnt = 1;
+}
+
+PJ_DEF(void) pjsip_cred_dup( pj_pool_t *pool,
+			     pjsip_cred_info *dst,
+			     const pjsip_cred_info *src)
+{
+    pj_strdup_with_null(pool, &dst->realm, &src->realm);
+    pj_strdup_with_null(pool, &dst->scheme, &src->scheme);
+    pj_strdup_with_null(pool, &dst->username, &src->username);
+    pj_strdup_with_null(pool, &dst->data, &src->data);
+}
+
+PJ_DEF(void) pjsua_config_dup(pj_pool_t *pool,
+			      pjsua_config *dst,
+			      const pjsua_config *src)
+{
+    unsigned i;
+
+    pj_memcpy(dst, src, sizeof(*src));
+
+    for (i=0; i<src->outbound_proxy_cnt; ++i) {
+	pj_strdup_with_null(pool, &dst->outbound_proxy[i],
+			    &src->outbound_proxy[i]);
+    }
+
+    for (i=0; i<src->cred_count; ++i) {
+	pjsip_cred_dup(pool, &dst->cred_info[i], &src->cred_info[i]);
+    }
+
+    pj_strdup_with_null(pool, &dst->user_agent, &src->user_agent);
+    pj_strdup_with_null(pool, &dst->stun_domain, &src->stun_domain);
+    pj_strdup_with_null(pool, &dst->stun_host, &src->stun_host);
+    pj_strdup_with_null(pool, &dst->stun_relay_host, &src->stun_relay_host);
+}
+
+PJ_DEF(void) pjsua_msg_data_init(pjsua_msg_data *msg_data)
+{
+    pj_bzero(msg_data, sizeof(*msg_data));
+    pj_list_init(&msg_data->hdr_list);
+}
+
+PJ_DEF(void) pjsua_transport_config_default(pjsua_transport_config *cfg)
+{
+    pj_bzero(cfg, sizeof(*cfg));
+    pjsip_tls_setting_default(&cfg->tls_setting);
+}
+
+PJ_DEF(void) pjsua_transport_config_dup(pj_pool_t *pool,
+					pjsua_transport_config *dst,
+					const pjsua_transport_config *src)
+{
+    PJ_UNUSED_ARG(pool);
+    pj_memcpy(dst, src, sizeof(*src));
+}
+
+PJ_DEF(void) pjsua_acc_config_default(pjsua_acc_config *cfg)
+{
+    pj_bzero(cfg, sizeof(*cfg));
+
+    cfg->reg_timeout = PJSUA_REG_INTERVAL;
+    cfg->transport_id = PJSUA_INVALID_ID;
+}
+
+PJ_DEF(void) pjsua_buddy_config_default(pjsua_buddy_config *cfg)
+{
+    pj_bzero(cfg, sizeof(*cfg));
+}
+
+PJ_DEF(void) pjsua_media_config_default(pjsua_media_config *cfg)
+{
+    pj_bzero(cfg, sizeof(*cfg));
+
+    cfg->clock_rate = PJSUA_DEFAULT_CLOCK_RATE;
+    cfg->max_media_ports = 32;
+    cfg->has_ioqueue = PJ_TRUE;
+    cfg->thread_cnt = 1;
+    cfg->quality = PJSUA_DEFAULT_CODEC_QUALITY;
+    cfg->ilbc_mode = PJSUA_DEFAULT_ILBC_MODE;
+    cfg->ec_tail_len = PJSUA_DEFAULT_EC_TAIL_LEN;
+    cfg->jb_init = cfg->jb_min_pre = cfg->jb_max_pre = cfg->jb_max = -1;
+}
+
 
 /*****************************************************************************
@@ -149,5 +256,5 @@
     /* Only want to handle OPTIONS requests */
     if (pjsip_method_cmp(&rdata->msg_info.msg->line.req.method,
-			 &pjsip_options_method) != 0)
+			 pjsip_get_options_method()) != 0)
     {
 	return PJ_FALSE;
Index: pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c	(revision 1417)
@@ -626,6 +626,6 @@
  * one UDP media transport for each call.
  */
-PJ_DEF(pj_status_t) 
-pjsua_media_transports_create(const pjsua_transport_config *app_cfg)
+PJ_DEF(pj_status_t) pjsua_media_transports_create(
+			const pjsua_transport_config *app_cfg)
 {
     pjsua_transport_config cfg;
@@ -1113,5 +1113,5 @@
 	return p;
 
-    for (--p; p!=path && *p!='/' && *p!='\\'; --p);
+    for (--p; p!=path && *p!='/' && *p!='\\'; ) --p;
 
     return (p==path) ? p : p+1;
Index: pjproject/trunk/pjsip/src/pjsua-lib/pjsua_pres.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsua-lib/pjsua_pres.c	(revision 1416)
+++ pjproject/trunk/pjsip/src/pjsua-lib/pjsua_pres.c	(revision 1417)
@@ -460,5 +460,5 @@
     pj_status_t status;
 
-    if (pjsip_method_cmp(req_method, &pjsip_subscribe_method) != 0)
+    if (pjsip_method_cmp(req_method, pjsip_get_subscribe_method()) != 0)
 	return PJ_FALSE;
 
@@ -927,5 +927,5 @@
 	tsx->role != PJSIP_UAC_ROLE ||
 	event->type != PJSIP_EVENT_RX_MSG || 
-	pjsip_method_cmp(&tsx->method, &pjsip_subscribe_method)!=0)
+	pjsip_method_cmp(&tsx->method, pjsip_get_subscribe_method())!=0)
     {
 	PJSUA_UNLOCK();
