HUGE changeset to make the rest of the libraries compile with C++ mode

git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@1266 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjlib-util/src/pjlib-util-test/encryption.c b/pjlib-util/src/pjlib-util-test/encryption.c
index 43d5c7f..7d91e46 100644
--- a/pjlib-util/src/pjlib-util-test/encryption.c
+++ b/pjlib-util/src/pjlib-util-test/encryption.c
@@ -384,7 +384,7 @@
 }
 
 /* CRC32 test data, generated from crc32 test on a Linux box */
-struct
+struct crc32_test_t
 {
     char	    *input;
     pj_uint32_t	     crc;
@@ -551,7 +551,7 @@
     if (!pool)
 	return PJ_ENOMEM;
 
-    input = pj_pool_alloc(pool, input_len);
+    input = (pj_uint8_t*)pj_pool_alloc(pool, input_len);
     pj_memset(input, '\xaa', input_len);
     
     PJ_LOG(3, (THIS_FILE, "  feeding %d Mbytes of data",
diff --git a/pjlib/src/pj/except.c b/pjlib/src/pj/except.c
index 3b7e981..006671e 100644
--- a/pjlib/src/pj/except.c
+++ b/pjlib/src/pj/except.c
@@ -41,7 +41,8 @@
 {
     struct pj_exception_state_t *handler;
 
-    handler = pj_thread_local_get(thread_local_id);
+    handler = (struct pj_exception_state_t*) 
+	      pj_thread_local_get(thread_local_id);
     if (handler == NULL) {
         PJ_LOG(1,("except.c", "!!!FATAL: unhandled exception %s!\n", 
 		   pj_exception_id_name(exception_id)));
@@ -78,7 +79,8 @@
 	pj_assert(thread_local_id != -1);
 	pj_atexit(&exception_cleanup);
     }
-    parent_handler = pj_thread_local_get(thread_local_id);
+    parent_handler = (struct pj_exception_state_t *)
+		      pj_thread_local_get(thread_local_id);
     rec->prev = parent_handler;
     pj_thread_local_set(thread_local_id, rec);
 }
@@ -87,7 +89,8 @@
 {
     struct pj_exception_state_t *handler;
 
-    handler = pj_thread_local_get(thread_local_id);
+    handler = (struct pj_exception_state_t *)
+	      pj_thread_local_get(thread_local_id);
     pj_assert(handler != NULL);
     pj_thread_local_set(thread_local_id, handler->prev);
 }
diff --git a/pjlib/src/pj/ioqueue_common_abs.c b/pjlib/src/pj/ioqueue_common_abs.c
index 82f962c..8fd1be7 100644
--- a/pjlib/src/pj/ioqueue_common_abs.c
+++ b/pjlib/src/pj/ioqueue_common_abs.c
@@ -301,7 +301,7 @@
 	    //write_op->op = 0;
         } else {
             pj_assert(!"Invalid operation type!");
-	    write_op->op = 0;
+	    write_op->op = PJ_IOQUEUE_OP_NONE;
             send_rc = PJ_EBUG;
         }
 
@@ -318,7 +318,7 @@
             h->fd_type == PJ_SOCK_DGRAM) 
         {
 
-	    write_op->op = 0;
+	    write_op->op = PJ_IOQUEUE_OP_NONE;
 
             if (h->fd_type != PJ_SOCK_DGRAM) {
                 /* Write completion of the whole stream. */
@@ -375,7 +375,7 @@
         /* Get one accept operation from the list. */
 	accept_op = h->accept_list.next;
         pj_list_erase(accept_op);
-        accept_op->op = 0;
+        accept_op->op = PJ_IOQUEUE_OP_NONE;
 
 	/* Clear bit in fdset if there is no more pending accept */
         if (pj_list_empty(&h->accept_list))
@@ -417,18 +417,18 @@
         bytes_read = read_op->size;
 
 	if ((read_op->op == PJ_IOQUEUE_OP_RECV_FROM)) {
-	    read_op->op = 0;
+	    read_op->op = PJ_IOQUEUE_OP_NONE;
 	    rc = pj_sock_recvfrom(h->fd, read_op->buf, &bytes_read, 
 				  read_op->flags,
 				  read_op->rmt_addr, 
                                   read_op->rmt_addrlen);
 	} else if ((read_op->op == PJ_IOQUEUE_OP_RECV)) {
-	    read_op->op = 0;
+	    read_op->op = PJ_IOQUEUE_OP_NONE;
 	    rc = pj_sock_recv(h->fd, read_op->buf, &bytes_read, 
 			      read_op->flags);
         } else {
             pj_assert(read_op->op == PJ_IOQUEUE_OP_READ);
-	    read_op->op = 0;
+	    read_op->op = PJ_IOQUEUE_OP_NONE;
             /*
              * User has specified pj_ioqueue_read().
              * On Win32, we should do ReadFile(). But because we got
@@ -561,7 +561,7 @@
     PJ_CHECK_STACK();
 
     read_op = (struct read_operation*)op_key;
-    read_op->op = 0;
+    read_op->op = PJ_IOQUEUE_OP_NONE;
 
     /* Check if key is closing. */
     if (IS_CLOSING(key))
@@ -630,7 +630,7 @@
 	return PJ_ECANCELLED;
 
     read_op = (struct read_operation*)op_key;
-    read_op->op = 0;
+    read_op->op = PJ_IOQUEUE_OP_NONE;
 
     /* Try to see if there's data immediately available. 
      */
@@ -768,7 +768,7 @@
     }
 
     write_op->op = PJ_IOQUEUE_OP_SEND;
-    write_op->buf = (void*)data;
+    write_op->buf = (char*)data;
     write_op->size = *length;
     write_op->written = 0;
     write_op->flags = flags;
@@ -848,7 +848,7 @@
     /*
      * Check that address storage can hold the address parameter.
      */
-    PJ_ASSERT_RETURN(addrlen <= sizeof(pj_sockaddr_in), PJ_EBUG);
+    PJ_ASSERT_RETURN(addrlen <= (int)sizeof(pj_sockaddr_in), PJ_EBUG);
 
     /*
      * Schedule asynchronous send.
@@ -883,7 +883,7 @@
     }
 
     write_op->op = PJ_IOQUEUE_OP_SEND_TO;
-    write_op->buf = (void*)data;
+    write_op->buf = (char*)data;
     write_op->size = *length;
     write_op->written = 0;
     write_op->flags = flags;
@@ -920,7 +920,7 @@
 	return PJ_ECANCELLED;
 
     accept_op = (struct accept_operation*)op_key;
-    accept_op->op = 0;
+    accept_op->op = PJ_IOQUEUE_OP_NONE;
 
     /* Fast track:
      *  See if there's new connection available immediately.
@@ -1052,7 +1052,7 @@
     while (op_rec != (void*)&key->read_list) {
         if (op_rec == (void*)op_key) {
             pj_list_erase(op_rec);
-            op_rec->op = 0;
+            op_rec->op = PJ_IOQUEUE_OP_NONE;
             pj_mutex_unlock(key->mutex);
 
             (*key->cb.on_read_complete)(key, op_key, bytes_status);
@@ -1066,7 +1066,7 @@
     while (op_rec != (void*)&key->write_list) {
         if (op_rec == (void*)op_key) {
             pj_list_erase(op_rec);
-            op_rec->op = 0;
+            op_rec->op = PJ_IOQUEUE_OP_NONE;
             pj_mutex_unlock(key->mutex);
 
             (*key->cb.on_write_complete)(key, op_key, bytes_status);
@@ -1080,7 +1080,7 @@
     while (op_rec != (void*)&key->accept_list) {
         if (op_rec == (void*)op_key) {
             pj_list_erase(op_rec);
-            op_rec->op = 0;
+            op_rec->op = PJ_IOQUEUE_OP_NONE;
             pj_mutex_unlock(key->mutex);
 
             (*key->cb.on_accept_complete)(key, op_key, 
diff --git a/pjlib/src/pj/ioqueue_select.c b/pjlib/src/pj/ioqueue_select.c
index f5e3690..e200d64 100644
--- a/pjlib/src/pj/ioqueue_select.c
+++ b/pjlib/src/pj/ioqueue_select.c
@@ -193,7 +193,7 @@
                      sizeof(union operation_key), PJ_EBUG);
 
     /* Create and init common ioqueue stuffs */
-    ioqueue = pj_pool_alloc(pool, sizeof(pj_ioqueue_t));
+    ioqueue = PJ_POOL_ALLOC_T(pool, pj_ioqueue_t);
     ioqueue_init(ioqueue);
 
     ioqueue->max = max_fd;
@@ -230,7 +230,7 @@
     for (i=0; i<max_fd; ++i) {
 	pj_ioqueue_key_t *key;
 
-	key = pj_pool_alloc(pool, sizeof(pj_ioqueue_key_t));
+	key = PJ_POOL_ALLOC_T(pool, pj_ioqueue_key_t);
 	key->ref_count = 0;
 	rc = pj_mutex_create_recursive(pool, NULL, &key->mutex);
 	if (rc != PJ_SUCCESS) {
diff --git a/pjlib/src/pj/log.c b/pjlib/src/pj/log.c
index bc39554..518854c 100644
--- a/pjlib/src/pj/log.c
+++ b/pjlib/src/pj/log.c
@@ -146,7 +146,7 @@
 				     "<logging error: msg too long>");
     }
     len = len + print_len;
-    if (len > 0 && len < sizeof(log_buffer)-2) {
+    if (len > 0 && len < (int)sizeof(log_buffer)-2) {
 	if (log_decor & PJ_LOG_HAS_CR) {
 	    log_buffer[len++] = '\r';
 	}
diff --git a/pjlib/src/pj/os_core_unix.c b/pjlib/src/pj/os_core_unix.c
index 2528694..33a8a85 100644
--- a/pjlib/src/pj/os_core_unix.c
+++ b/pjlib/src/pj/os_core_unix.c
@@ -21,7 +21,9 @@
  * - Thanks for Zetron, Inc. (Phil Torre, ptorre@zetron.com) for donating
  *   the RTEMS port.
  */
-#define _GNU_SOURCE
+#ifndef _GNU_SOURCE
+#   define _GNU_SOURCE
+#endif
 #include <pj/os.h>
 #include <pj/assert.h>
 #include <pj/pool.h>
@@ -339,7 +341,7 @@
  */
 static void *thread_main(void *param)
 {
-    pj_thread_t *rec = param;
+    pj_thread_t *rec = (pj_thread_t*)param;
     void *result;
     pj_status_t rc;
 
@@ -506,7 +508,7 @@
 PJ_DEF(pj_thread_t*) pj_thread_this(void)
 {
 #if PJ_HAS_THREADS
-    pj_thread_t *rec = pj_thread_local_get(thread_tls_id);
+    pj_thread_t *rec = (pj_thread_t*)pj_thread_local_get(thread_tls_id);
     
     if (rec == NULL) {
 	pj_assert(!"Calling pjlib from unknown/external thread. You must "
@@ -663,7 +665,10 @@
 				      pj_atomic_t **ptr_atomic)
 {
     pj_status_t rc;
-    pj_atomic_t *atomic_var = pj_pool_calloc(pool, 1, sizeof(pj_atomic_t));
+    pj_atomic_t *atomic_var;
+
+    atomic_var = PJ_POOL_ZALLOC_T(pool, pj_atomic_t);
+
     PJ_ASSERT_RETURN(atomic_var, PJ_ENOMEM);
     
 #if PJ_HAS_THREADS
@@ -907,6 +912,12 @@
 
 
 ///////////////////////////////////////////////////////////////////////////////
+#if defined(PJ_LINUX) && PJ_LINUX!=0
+PJ_BEGIN_DECL
+PJ_DECL(int) pthread_mutexattr_settype(pthread_mutexattr_t*,int);
+PJ_END_DECL
+#endif
+
 static pj_status_t init_mutex(pj_mutex_t *mutex, const char *name, int type)
 {
 #if PJ_HAS_THREADS
@@ -921,7 +932,6 @@
 
     if (type == PJ_MUTEX_SIMPLE) {
 #if defined(PJ_LINUX) && PJ_LINUX!=0
-	extern int pthread_mutexattr_settype(pthread_mutexattr_t*,int);
 	rc = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_FAST_NP);
 #elif defined(PJ_RTEMS) && PJ_RTEMS!=0
 	/* Nothing to do, default is simple */
@@ -930,7 +940,6 @@
 #endif
     } else {
 #if defined(PJ_LINUX) && PJ_LINUX!=0
-	extern int pthread_mutexattr_settype(pthread_mutexattr_t*,int);
 	rc = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
 #elif defined(PJ_RTEMS) && PJ_RTEMS!=0
 	// Phil Torre <ptorre@zetron.com>:
@@ -991,7 +1000,7 @@
 
     PJ_ASSERT_RETURN(pool && ptr_mutex, PJ_EINVAL);
 
-    mutex = pj_pool_alloc(pool, sizeof(*mutex));
+    mutex = PJ_POOL_ALLOC_T(pool, pj_mutex_t);
     PJ_ASSERT_RETURN(mutex, PJ_ENOMEM);
 
     if ((rc=init_mutex(mutex, name, type)) != PJ_SUCCESS)
@@ -1228,7 +1237,7 @@
 
     PJ_UNUSED_ARG(name);
     
-    rwm = pj_pool_alloc(pool, sizeof(pj_rwmutex_t));
+    rwm = PJ_POOL_ALLOC_T(pool, pj_rwmutex_t);
     PJ_ASSERT_RETURN(rwm, PJ_ENOMEM);
 
     status = pthread_rwlock_init(&rwm->rwlock, NULL);
@@ -1329,7 +1338,7 @@
     PJ_CHECK_STACK();
     PJ_ASSERT_RETURN(pool != NULL && ptr_sem != NULL, PJ_EINVAL);
 
-    sem = pj_pool_alloc(pool, sizeof(*sem));
+    sem = PJ_POOL_ALLOC_T(pool, pj_sem_t);
     PJ_ASSERT_RETURN(sem, PJ_ENOMEM);
 
     if (sem_init( &sem->sem, 0, initial) != 0) 
diff --git a/pjlib/src/pj/os_error_unix.c b/pjlib/src/pj/os_error_unix.c
index d3cfe14..3d4b526 100644
--- a/pjlib/src/pj/os_error_unix.c
+++ b/pjlib/src/pj/os_error_unix.c
@@ -40,6 +40,12 @@
     errno = PJ_STATUS_TO_OS(code);
 }
 
+PJ_BEGIN_DECL
+
+    PJ_DECL(int) platform_strerror(pj_os_err_type code, 
+                              	   char *buf, pj_size_t bufsize );
+PJ_END_DECL
+
 /* 
  * platform_strerror()
  *
diff --git a/pjlib/src/pj/sock_bsd.c b/pjlib/src/pj/sock_bsd.c
index 8fc4f70..3e39335 100644
--- a/pjlib/src/pj/sock_bsd.c
+++ b/pjlib/src/pj/sock_bsd.c
@@ -385,7 +385,7 @@
 {
     PJ_CHECK_STACK();
 
-    PJ_ASSERT_RETURN(addr && len >= sizeof(struct sockaddr_in), PJ_EINVAL);
+    PJ_ASSERT_RETURN(addr && len >= (int)sizeof(struct sockaddr_in), PJ_EINVAL);
 
     if (bind(sock, (struct sockaddr*)addr, len) != 0)
 	return PJ_RETURN_OS_ERROR(pj_get_native_netos_error());
diff --git a/pjlib/src/pjlib-test/file.c b/pjlib/src/pjlib-test/file.c
index 5cfaf31..e32a271 100644
--- a/pjlib/src/pjlib-test/file.c
+++ b/pjlib/src/pjlib-test/file.c
@@ -125,7 +125,7 @@
     }
 
     size = 0;
-    while (size < sizeof(readbuf)) {
+    while (size < (pj_ssize_t)sizeof(readbuf)) {
         pj_ssize_t read;
         read = 1;
         status = pj_file_read(fd, &readbuf[size], &read);
diff --git a/pjlib/src/pjlib-test/ioq_perf.c b/pjlib/src/pjlib-test/ioq_perf.c
index ea47603..e15fe1b 100644
--- a/pjlib/src/pjlib-test/ioq_perf.c
+++ b/pjlib/src/pjlib-test/ioq_perf.c
@@ -505,7 +505,7 @@
     PJ_LOG(3,(THIS_FILE, "   ======================================="));
 
     best_bandwidth = 0;
-    for (i=0; i<sizeof(test_param)/sizeof(test_param[0]); ++i) {
+    for (i=0; i<(int)(sizeof(test_param)/sizeof(test_param[0])); ++i) {
         pj_size_t bandwidth;
 
         rc = perform_test(test_param[i].type, 
diff --git a/pjlib/src/pjlib-test/sock.c b/pjlib/src/pjlib-test/sock.c
index 4ccad78..9011a70 100644
--- a/pjlib/src/pjlib-test/sock.c
+++ b/pjlib/src/pjlib-test/sock.c
@@ -141,7 +141,7 @@
 
     PJ_LOG(3,("test", "...simple_sock_test()"));
 
-    for (i=0; i<sizeof(types)/sizeof(types[0]); ++i) {
+    for (i=0; i<(int)(sizeof(types)/sizeof(types[0])); ++i) {
 	
 	rc = pj_sock_socket(PJ_AF_INET, types[i], 0, &sock);
 	if (rc != PJ_SUCCESS) {
diff --git a/pjlib/src/pjlib-test/string.c b/pjlib/src/pjlib-test/string.c
index d8bc54f..dc845d0 100644
--- a/pjlib/src/pjlib-test/string.c
+++ b/pjlib/src/pjlib-test/string.c
@@ -96,8 +96,8 @@
  */
 #define STRTEST(res,S1,S2,code)	\
 	    do { \
-		s1.ptr=S1; s1.slen=S1?len:0; \
-		s2.ptr=S2; s2.slen=S2?len:0; \
+		s1.ptr=S1; s1.slen=(S1)?len:0; \
+		s2.ptr=S2; s2.slen=(S2)?len:0; \
 		pj_get_timestamp(&t1); \
 	        if (C(pj_stricmp(&s1,&s2),res)) return code; \
 		pj_get_timestamp(&t2); \
@@ -123,12 +123,14 @@
 
     pj_thread_sleep(0);
 
+#define SNULL 0
+
     /* Compare empty strings. */
     len=0;
     STRTEST( 0, "","",-500);
-    STRTEST( 0, NULL,"",-502);
-    STRTEST( 0, "",NULL,-504);
-    STRTEST( 0, NULL,NULL,-506);
+    STRTEST( 0, SNULL,"",-502);
+    STRTEST( 0, "",SNULL,-504);
+    STRTEST( 0, SNULL,SNULL,-506);
     STRTEST( 0, "hello","world",-508);
 
     /* equal, length=1 
@@ -139,8 +141,8 @@
     STRTEST( 0, "a",buf+0,-510);
     STRTEST( 0, "a",buf+1,-512);
     STRTEST( -1, "O", "P", -514);
-    STRTEST(-1, NULL, "a", -516);
-    STRTEST(1, "a", NULL, -518);
+    STRTEST(-1, SNULL, "a", -516);
+    STRTEST(1, "a", SNULL, -518);
 
     /* equal, length=2 
      * use buffer to simulate non-aligned string.
@@ -266,19 +268,19 @@
     /* Test with length == 0 */
     len=0;
     STR_TEST(0, "", "", -400);
-    STR_TEST(0, NULL, "", -405);
-    STR_TEST(0, "", NULL, -410);
-    STR_TEST(0, NULL, NULL, -415);
+    STR_TEST(0, SNULL, "", -405);
+    STR_TEST(0, "", SNULL, -410);
+    STR_TEST(0, SNULL, SNULL, -415);
     STR_TEST(0, "hello", "", -420);
-    STR_TEST(0, "hello", NULL, -425);
+    STR_TEST(0, "hello", SNULL, -425);
 
     /* Test with length != 0 */
     len = 2;
     STR_TEST(0, "12", "12", -430);
     STR_TEST(1, "12", "1", -435);
     STR_TEST(-1, "1", "12", -440);
-    STR_TEST(-1, NULL, "12", -445);
-    STR_TEST(1, "12", NULL, -450);
+    STR_TEST(-1, SNULL, "12", -445);
+    STR_TEST(1, "12", SNULL, -450);
 
     return 0;
 
@@ -295,7 +297,7 @@
     pj_pool_t *pool;
     int i;
 
-    pool = pj_pool_create(mem, NULL, 4096, 0, NULL);
+    pool = pj_pool_create(mem, SNULL, 4096, 0, SNULL);
     if (!pool) return -5;
     
     /* 
@@ -367,7 +369,7 @@
      */
     s5 = pj_str("123456");
 
-    pj_strtoul2(&s5, NULL, 10);	/* Crash test */
+    pj_strtoul2(&s5, SNULL, 10);	/* Crash test */
 
     if (pj_strtoul2(&s5, &s4, 10) != 123456UL)
 	return -290;
@@ -381,7 +383,7 @@
 	return -293;
     if (s4.slen != 4)
 	return -294;
-    if (s4.ptr == NULL || *s4.ptr != 'A')
+    if (s4.ptr == SNULL || *s4.ptr != 'A')
 	return -295;
     if (pj_strtoul2(&s5, &s4, 16) != 0x123ABCDUL)
 	return -296;
diff --git a/pjmedia/src/pjmedia-codec/gsm.c b/pjmedia/src/pjmedia-codec/gsm.c
index d21956a..c909339 100644
--- a/pjmedia/src/pjmedia-codec/gsm.c
+++ b/pjmedia/src/pjmedia-codec/gsm.c
@@ -122,8 +122,8 @@
 /* GSM codec private data. */
 struct gsm_data
 {
-    void		*encoder;
-    void		*decoder;
+    gsm_state		*encoder;
+    gsm_state		*decoder;
     pj_bool_t		 plc_enabled;
 #if !PLC_DISABLED
     pjmedia_plc		*plc;
@@ -323,14 +323,12 @@
 	codec = gsm_codec_factory.codec_list.next;
 	pj_list_erase(codec);
     } else {
-	codec = pj_pool_zalloc(gsm_codec_factory.pool, 
-			       sizeof(pjmedia_codec));
+	codec = PJ_POOL_ZALLOC_T(gsm_codec_factory.pool, pjmedia_codec);
 	PJ_ASSERT_RETURN(codec != NULL, PJ_ENOMEM);
 	codec->op = &gsm_op;
 	codec->factory = factory;
 
-	gsm_data = pj_pool_zalloc(gsm_codec_factory.pool, 
-				  sizeof(struct gsm_data));
+	gsm_data = PJ_POOL_ZALLOC_T(gsm_codec_factory.pool, struct gsm_data);
 	codec->codec_data = gsm_data;
 
 #if !PLC_DISABLED
@@ -371,7 +369,7 @@
     PJ_ASSERT_RETURN(factory && codec, PJ_EINVAL);
     PJ_ASSERT_RETURN(factory == &gsm_codec_factory.base, PJ_EINVAL);
 
-    gsm_data = codec->codec_data;
+    gsm_data = (struct gsm_data*) codec->codec_data;
 
     /* Close codec, if it's not closed. */
     gsm_codec_close(codec);
@@ -417,7 +415,7 @@
 static pj_status_t gsm_codec_open( pjmedia_codec *codec, 
 				   pjmedia_codec_param *attr )
 {
-    struct gsm_data *gsm_data = codec->codec_data;
+    struct gsm_data *gsm_data = (struct gsm_data*) codec->codec_data;
 
     pj_assert(gsm_data != NULL);
     pj_assert(gsm_data->encoder == NULL && gsm_data->decoder == NULL);
@@ -441,7 +439,7 @@
  */
 static pj_status_t gsm_codec_close( pjmedia_codec *codec )
 {
-    struct gsm_data *gsm_data = codec->codec_data;
+    struct gsm_data *gsm_data = (struct gsm_data*) codec->codec_data;
 
     pj_assert(gsm_data != NULL);
 
@@ -464,7 +462,7 @@
 static pj_status_t  gsm_codec_modify(pjmedia_codec *codec, 
 				     const pjmedia_codec_param *attr )
 {
-    struct gsm_data *gsm_data = codec->codec_data;
+    struct gsm_data *gsm_data = (struct gsm_data*) codec->codec_data;
 
     pj_assert(gsm_data != NULL);
     pj_assert(gsm_data->encoder != NULL && gsm_data->decoder != NULL);
@@ -516,7 +514,7 @@
 				     unsigned output_buf_len, 
 				     struct pjmedia_frame *output)
 {
-    struct gsm_data *gsm_data = codec->codec_data;
+    struct gsm_data *gsm_data = (struct gsm_data*) codec->codec_data;
 
     pj_assert(gsm_data != NULL);
     PJ_ASSERT_RETURN(input && output, PJ_EINVAL);
@@ -535,7 +533,7 @@
 					       &input->timestamp);
 
 	is_silence = pjmedia_silence_det_detect(gsm_data->vad, 
-					        input->buf,
+					        (const pj_int16_t*) input->buf,
 						(input->size >> 1),
 						NULL);
 	if (is_silence &&
@@ -570,7 +568,7 @@
 				     unsigned output_buf_len, 
 				     struct pjmedia_frame *output)
 {
-    struct gsm_data *gsm_data = codec->codec_data;
+    struct gsm_data *gsm_data = (struct gsm_data*) codec->codec_data;
 
     pj_assert(gsm_data != NULL);
     PJ_ASSERT_RETURN(input && output, PJ_EINVAL);
diff --git a/pjmedia/src/pjmedia-codec/ilbc.c b/pjmedia/src/pjmedia-codec/ilbc.c
index 32e0383..7819867 100644
--- a/pjmedia/src/pjmedia-codec/ilbc.c
+++ b/pjmedia/src/pjmedia-codec/ilbc.c
@@ -319,7 +319,7 @@
 				     2000, 2000);
     PJ_ASSERT_RETURN(pool != NULL, PJ_ENOMEM);
 
-    codec = pj_pool_zalloc(pool, sizeof(struct ilbc_codec));
+    codec = PJ_POOL_ZALLOC_T(pool, struct ilbc_codec);
     codec->base.op = &ilbc_op;
     codec->base.factory = factory;
     codec->pool = pool;
@@ -530,7 +530,7 @@
 					      &input->timestamp);
 
 	is_silence = pjmedia_silence_det_detect(ilbc_codec->vad, 
-					        input->buf,
+					        (const pj_int16_t*)input->buf,
 						(input->size >> 1),
 						NULL);
 	if (is_silence &&
@@ -585,7 +585,7 @@
 	return PJMEDIA_CODEC_EFRMINLEN;
 
     /* Decode to temporary buffer */
-    iLBC_decode(ilbc_codec->dec_block, input->buf,
+    iLBC_decode(ilbc_codec->dec_block, (unsigned char*) input->buf,
 		&ilbc_codec->dec, 1);
 
     /* Convert decodec samples from float to short */
diff --git a/pjmedia/src/pjmedia-codec/l16.c b/pjmedia/src/pjmedia-codec/l16.c
index 629ea58..df45604 100644
--- a/pjmedia/src/pjmedia-codec/l16.c
+++ b/pjmedia/src/pjmedia-codec/l16.c
@@ -428,7 +428,7 @@
     /* Allocate new codec if no more is available */
     if (pj_list_empty(&l16_factory.codec_list)) {
 
-	codec = pj_pool_alloc(l16_factory.pool, sizeof(pjmedia_codec));
+	codec = PJ_POOL_ALLOC_T(l16_factory.pool, pjmedia_codec);
 	codec->codec_data = pj_pool_alloc(l16_factory.pool, 
 					  sizeof(struct l16_data));
 	codec->factory = factory;
@@ -441,7 +441,7 @@
 
     /* Init private data */
     ptime = GET_PTIME(id->clock_rate);
-    data = codec->codec_data;
+    data = (struct l16_data*) codec->codec_data;
     data->frame_size = ptime * id->clock_rate * id->channel_cnt * 2 / 1000;
 
     /* Zero the list, for error detection in l16_dealloc_codec */
diff --git a/pjmedia/src/pjmedia-codec/speex_codec.c b/pjmedia/src/pjmedia-codec/speex_codec.c
index e79dc90..955377b 100644
--- a/pjmedia/src/pjmedia-codec/speex_codec.c
+++ b/pjmedia/src/pjmedia-codec/speex_codec.c
@@ -481,8 +481,7 @@
 	codec = spx_factory.codec_list.next;
 	pj_list_erase(codec);
     } else {
-	codec = pj_pool_zalloc(spx_factory.pool, 
-			       sizeof(pjmedia_codec));
+	codec = PJ_POOL_ZALLOC_T(spx_factory.pool, pjmedia_codec);
 	PJ_ASSERT_RETURN(codec != NULL, PJ_ENOMEM);
 	codec->op = &spx_op;
 	codec->factory = factory;
@@ -736,7 +735,8 @@
     speex_bits_reset(&spx->enc_bits);
 
     /* Encode the frame */
-    tx = speex_encode_int(spx->enc, input->buf, &spx->enc_bits);
+    tx = speex_encode_int(spx->enc, (spx_int16_t*)input->buf, 
+			  &spx->enc_bits);
 
     /* Check if we need not to transmit the frame (DTX) */
     if (tx == 0) {
@@ -753,7 +753,7 @@
 
     /* Copy the bits to an array of char that can be written */
     output->size = speex_bits_write(&spx->enc_bits, 
-				    output->buf, output_buf_len);
+				    (char*)output->buf, output_buf_len);
     output->type = PJMEDIA_FRAME_TYPE_AUDIO;
     output->timestamp = input->timestamp;
 
@@ -781,14 +781,14 @@
     }
 
     /* Copy the data into the bit-stream struct */
-    speex_bits_read_from(&spx->dec_bits, input->buf, input->size);
+    speex_bits_read_from(&spx->dec_bits, (char*)input->buf, input->size);
 
     /* Decode the data */
-    speex_decode_int(spx->dec, &spx->dec_bits, output->buf);
+    speex_decode_int(spx->dec, &spx->dec_bits, (spx_int16_t*)output->buf);
 
     output->type = PJMEDIA_FRAME_TYPE_AUDIO;
     output->size = speex_bits_nbytes(&spx->dec_bits);
-    pj_assert(output->size <= (int)output_buf_len);
+    pj_assert(output->size <= (unsigned)output_buf_len);
     output->timestamp.u64 = input->timestamp.u64;
 
 
@@ -814,7 +814,7 @@
     pj_assert(count <= output_buf_len/2);
 
     /* Recover packet loss */
-    speex_decode_int(spx->dec, NULL, output->buf);
+    speex_decode_int(spx->dec, NULL, (spx_int16_t*) output->buf);
 
     output->size = count * 2;
 
diff --git a/pjmedia/src/pjmedia/clock_thread.c b/pjmedia/src/pjmedia/clock_thread.c
index b1064a8..6dd8a25 100644
--- a/pjmedia/src/pjmedia/clock_thread.c
+++ b/pjmedia/src/pjmedia/clock_thread.c
@@ -66,7 +66,7 @@
     PJ_ASSERT_RETURN(pool && clock_rate && samples_per_frame && p_clock,
 		     PJ_EINVAL);
 
-    clock = pj_pool_alloc(pool, sizeof(pjmedia_clock));
+    clock = PJ_POOL_ALLOC_T(pool, pjmedia_clock);
 
     
     status = pj_get_timestamp_freq(&clock->freq);
@@ -197,7 +197,7 @@
 static int clock_thread(void *arg)
 {
     pj_timestamp now;
-    pjmedia_clock *clock = arg;
+    pjmedia_clock *clock = (pjmedia_clock*) arg;
 
     /* Get the first tick */
     pj_get_timestamp(&clock->next_tick);
diff --git a/pjmedia/src/pjmedia/conference.c b/pjmedia/src/pjmedia/conference.c
index b3619d5..aa6b1fa 100644
--- a/pjmedia/src/pjmedia/conference.c
+++ b/pjmedia/src/pjmedia/conference.c
@@ -239,7 +239,7 @@
     pj_status_t status;
 
     /* Create port. */
-    conf_port = pj_pool_zalloc(pool, sizeof(struct conf_port));
+    conf_port = PJ_POOL_ZALLOC_T(pool, struct conf_port);
     PJ_ASSERT_RETURN(conf_port, PJ_ENOMEM);
 
     /* Set name */
@@ -254,7 +254,8 @@
     conf_port->rx_adj_level = NORMAL_LEVEL;
 
     /* Create transmit flag array */
-    conf_port->listener_slots = pj_pool_zalloc(pool, 
+    conf_port->listener_slots = (SLOT_TYPE*)
+				pj_pool_zalloc(pool, 
 					  conf->max_ports * sizeof(SLOT_TYPE));
     PJ_ASSERT_RETURN(conf_port->listener_slots, PJ_ENOMEM);
 
@@ -335,21 +336,24 @@
 					   conf_port->clock_rate * 1.0 /
 					   conf->clock_rate);
 	conf_port->rx_buf_count = 0;
-	conf_port->rx_buf = pj_pool_alloc(pool, conf_port->rx_buf_cap *
+	conf_port->rx_buf = (pj_int16_t*)
+			    pj_pool_alloc(pool, conf_port->rx_buf_cap *
 						sizeof(conf_port->rx_buf[0]));
 	PJ_ASSERT_RETURN(conf_port->rx_buf, PJ_ENOMEM);
 
 	/* Create TX buffer. */
 	conf_port->tx_buf_cap = conf_port->rx_buf_cap;
 	conf_port->tx_buf_count = 0;
-	conf_port->tx_buf = pj_pool_alloc(pool, conf_port->tx_buf_cap *
+	conf_port->tx_buf = (pj_int16_t*)
+			    pj_pool_alloc(pool, conf_port->tx_buf_cap *
 						sizeof(conf_port->tx_buf[0]));
 	PJ_ASSERT_RETURN(conf_port->tx_buf, PJ_ENOMEM);
     }
 
 
     /* Create mix buffer. */
-    conf_port->mix_buf = pj_pool_zalloc(pool, conf->samples_per_frame *
+    conf_port->mix_buf = (pj_uint32_t*)
+			 pj_pool_zalloc(pool, conf->samples_per_frame *
 					      sizeof(conf_port->mix_buf[0]));
     PJ_ASSERT_RETURN(conf_port->mix_buf, PJ_ENOMEM);
 
@@ -380,7 +384,8 @@
 
     /* Passive port has rx buffers. */
     for (i=0; i<RX_BUF_COUNT; ++i) {
-	conf_port->snd_buf[i] = pj_pool_zalloc(pool, conf->samples_per_frame *
+	conf_port->snd_buf[i] = (pj_int16_t*)
+				pj_pool_zalloc(pool, conf->samples_per_frame *
 					      sizeof(conf_port->snd_buf[0][0]));
 	if (conf_port->snd_buf[i] == NULL) {
 	    return PJ_ENOMEM;
@@ -486,10 +491,11 @@
 	      max_ports));
 
     /* Create and init conf structure. */
-    conf = pj_pool_zalloc(pool, sizeof(pjmedia_conf));
+    conf = PJ_POOL_ZALLOC_T(pool, pjmedia_conf);
     PJ_ASSERT_RETURN(conf, PJ_ENOMEM);
 
-    conf->ports = pj_pool_zalloc(pool, max_ports*sizeof(void*));
+    conf->ports = (struct conf_port**) 
+		  pj_pool_zalloc(pool, max_ports*sizeof(void*));
     PJ_ASSERT_RETURN(conf->ports, PJ_ENOMEM);
 
     conf->options = options;
@@ -501,7 +507,7 @@
 
     
     /* Create and initialize the master port interface. */
-    conf->master_port = pj_pool_zalloc(pool, sizeof(pjmedia_port));
+    conf->master_port = PJ_POOL_ZALLOC_T(pool, pjmedia_port);
     PJ_ASSERT_RETURN(conf->master_port, PJ_ENOMEM);
     
     pjmedia_port_info_init(&conf->master_port->info, &name, SIGNATURE,
@@ -522,7 +528,8 @@
 	return status;
 
     /* Create temporary buffer. */
-    conf->uns_buf = pj_pool_zalloc(pool, samples_per_frame *
+    conf->uns_buf = (pj_uint16_t*)
+		    pj_pool_zalloc(pool, samples_per_frame *
 					 sizeof(conf->uns_buf[0]));
 
     /* Create mutex. */
@@ -597,7 +604,7 @@
  */
 static pj_status_t destroy_port(pjmedia_port *this_port)
 {
-    pjmedia_conf *conf = this_port->port_data.pdata;
+    pjmedia_conf *conf = (pjmedia_conf*) this_port->port_data.pdata;
     return pjmedia_conf_destroy(conf);
 }
 
@@ -625,7 +632,7 @@
 PJ_DEF(pj_status_t) pjmedia_conf_set_port0_name(pjmedia_conf *conf,
 						const pj_str_t *name)
 {
-    int len;
+    unsigned len;
 
     /* Sanity check. */
     PJ_ASSERT_RETURN(conf != NULL && name != NULL, PJ_EINVAL);
@@ -763,12 +770,12 @@
     if (name == NULL) {
 	name = &tmp;
 
-	tmp.ptr = pj_pool_alloc(pool, 32);
+	tmp.ptr = (char*) pj_pool_alloc(pool, 32);
 	tmp.slen = pj_ansi_snprintf(tmp.ptr, 32, "ConfPort#%d", index);
     }
 
     /* Create and initialize the media port structure. */
-    port = pj_pool_zalloc(pool, sizeof(pjmedia_port));
+    port = PJ_POOL_ZALLOC_T(pool, pjmedia_port);
     PJ_ASSERT_RETURN(port, PJ_ENOMEM);
     
     pjmedia_port_info_init(&port->info, name, SIGNATURE_PORT,
@@ -1600,7 +1607,7 @@
 static pj_status_t get_frame(pjmedia_port *this_port, 
 			     pjmedia_frame *frame)
 {
-    pjmedia_conf *conf = this_port->port_data.pdata;
+    pjmedia_conf *conf = (pjmedia_conf*) this_port->port_data.pdata;
     pjmedia_frame_type speaker_frame_type = PJMEDIA_FRAME_TYPE_NONE;
     unsigned ci, cj, i, j;
     
@@ -1676,7 +1683,8 @@
 	    }
 
 	    snd_buf = conf_port->snd_buf[conf_port->snd_read_pos];
-	    pjmedia_copy_samples(frame->buf, snd_buf, conf->samples_per_frame);
+	    pjmedia_copy_samples((pj_int16_t*)frame->buf, snd_buf, 
+				 conf->samples_per_frame);
 	    conf_port->snd_read_pos = (conf_port->snd_read_pos+1) % RX_BUF_COUNT;
 
 	} else {
@@ -1684,7 +1692,7 @@
 	    pj_status_t status;
 	    pjmedia_frame_type frame_type;
 
-	    status = read_port(conf, conf_port, frame->buf, 
+	    status = read_port(conf, conf_port, (pj_int16_t*)frame->buf, 
 			       conf->samples_per_frame, &frame_type);
 	    
 	    if (status != PJ_SUCCESS) {
@@ -1710,7 +1718,7 @@
 	 * Otherwise just calculate the averate level.
 	 */
 	if (conf_port->rx_adj_level != NORMAL_LEVEL) {
-	    pj_int16_t *input = frame->buf;
+	    pj_int16_t *input = (pj_int16_t*) frame->buf;
 	    pj_int32_t adj = conf_port->rx_adj_level;
 
 	    level = 0;
@@ -1738,7 +1746,7 @@
 	    level /= conf->samples_per_frame;
 
 	} else {
-	    level = pjmedia_calc_avg_signal(frame->buf, 
+	    level = pjmedia_calc_avg_signal((pj_int16_t*) frame->buf, 
 					    conf->samples_per_frame);
 	}
 
@@ -1799,7 +1807,8 @@
 	     */
 	    if (listener->transmitter_cnt == 1) {
 		pjmedia_copy_samples((pj_int16_t*)mix_buf, 
-				     frame->buf, conf->samples_per_frame);
+				     (const pj_int16_t*)frame->buf, 
+				     conf->samples_per_frame);
 		listener->src_level = level;
 	    } else {
 		for (k=0; k<conf->samples_per_frame; ++k)
@@ -1856,10 +1865,11 @@
 	TRACE_((THIS_FILE, "write to audio, count=%d", 
 			   conf->samples_per_frame));
 
-	pjmedia_copy_samples( frame->buf, (pj_int16_t*)conf->ports[0]->mix_buf, 
+	pjmedia_copy_samples( (pj_int16_t*)frame->buf, 
+			      (const pj_int16_t*)conf->ports[0]->mix_buf, 
 			      conf->samples_per_frame);
     } else {
-	pjmedia_zero_samples( frame->buf, conf->samples_per_frame ); 
+	pjmedia_zero_samples((pj_int16_t*)frame->buf, conf->samples_per_frame); 
     }
 
     /* MUST set frame type */
@@ -1897,9 +1907,9 @@
 static pj_status_t put_frame(pjmedia_port *this_port, 
 			     const pjmedia_frame *frame)
 {
-    pjmedia_conf *conf = this_port->port_data.pdata;
+    pjmedia_conf *conf = (pjmedia_conf*) this_port->port_data.pdata;
     struct conf_port *port = conf->ports[this_port->port_data.ldata];
-    const pj_int16_t *input = frame->buf;
+    const pj_int16_t *input = (const pj_int16_t*) frame->buf;
     pj_int16_t *target_snd_buf;
 
     /* Check for correct size. */
diff --git a/pjmedia/src/pjmedia/echo_common.c b/pjmedia/src/pjmedia/echo_common.c
index cccf5c9..5f392ef 100644
--- a/pjmedia/src/pjmedia/echo_common.c
+++ b/pjmedia/src/pjmedia/echo_common.c
@@ -145,7 +145,7 @@
     options |= PJMEDIA_ECHO_SIMPLE;
 #endif
 
-    ec = pj_pool_zalloc(pool, sizeof(struct pjmedia_echo_state));
+    ec = PJ_POOL_ZALLOC_T(pool, struct pjmedia_echo_state);
 
     if (options & PJMEDIA_ECHO_SIMPLE) {
 	ec->op = &echo_supp_op;
diff --git a/pjmedia/src/pjmedia/echo_port.c b/pjmedia/src/pjmedia/echo_port.c
index 9f29141..e8895d2 100644
--- a/pjmedia/src/pjmedia/echo_port.c
+++ b/pjmedia/src/pjmedia/echo_port.c
@@ -59,7 +59,7 @@
 		     PJ_EINVAL);
 
     /* Create the port and the AEC itself */
-    ec = pj_pool_zalloc(pool, sizeof(struct ec));
+    ec = PJ_POOL_ZALLOC_T(pool, struct ec);
     
     pjmedia_port_info_init(&ec->base.info, &AEC, SIGNATURE,
 			   dn_port->info.clock_rate, 
@@ -100,7 +100,7 @@
     PJ_ASSERT_RETURN(frame->size == this_port->info.samples_per_frame * 2,
 		     PJ_EINVAL);
 
-    pjmedia_echo_capture(ec->ec, frame->buf, 0);
+    pjmedia_echo_capture(ec->ec, (pj_int16_t*)frame->buf, 0);
 
     return pjmedia_port_put_frame(ec->dn_port, frame);
 }
@@ -116,10 +116,11 @@
 
     status = pjmedia_port_get_frame(ec->dn_port, frame);
     if (status!=PJ_SUCCESS || frame->type!=PJMEDIA_FRAME_TYPE_AUDIO) {
-	pjmedia_zero_samples(frame->buf, this_port->info.samples_per_frame);
+	pjmedia_zero_samples((pj_int16_t*)frame->buf, 
+			     this_port->info.samples_per_frame);
     }
 
-    pjmedia_echo_playback(ec->ec, frame->buf);
+    pjmedia_echo_playback(ec->ec, (pj_int16_t*)frame->buf);
 
     return status;
 }
diff --git a/pjmedia/src/pjmedia/echo_speex.c b/pjmedia/src/pjmedia/echo_speex.c
index 3eaa324..daf19d4 100644
--- a/pjmedia/src/pjmedia/echo_speex.c
+++ b/pjmedia/src/pjmedia/echo_speex.c
@@ -77,7 +77,7 @@
     pjmedia_frame_queue *fq;
     unsigned i;
 
-    fq = pj_pool_zalloc(pool, sizeof(pjmedia_frame_queue));
+    fq = PJ_POOL_ZALLOC_T(pool, pjmedia_frame_queue);
 
     pj_ansi_snprintf(fq->obj_name, sizeof(fq->obj_name), name, fq);
     fq->obj_name[sizeof(fq->obj_name)-1] = '\0';
@@ -93,7 +93,7 @@
     for (i=0; i<max_count; ++i) {
 	struct fq_frame *f;
 
-	f = pj_pool_zalloc(pool, sizeof(struct fq_frame));
+	f = PJ_POOL_ZALLOC_T(pool, struct fq_frame);
 	f->buf = pj_pool_alloc(pool, frame_size);
 
 	pj_list_push_back(&fq->free_list, f);
@@ -294,7 +294,7 @@
 
     *p_echo = NULL;
 
-    echo = pj_pool_zalloc(pool, sizeof(speex_ec));
+    echo = PJ_POOL_ZALLOC_T(pool, speex_ec);
     PJ_ASSERT_RETURN(echo != NULL, PJ_ENOMEM);
 
     if (options & PJMEDIA_ECHO_NO_LOCK) {
@@ -355,11 +355,12 @@
 
 
     /* Create temporary frame for echo cancellation */
-    echo->tmp_frame = pj_pool_zalloc(pool, 2 * samples_per_frame);
+    echo->tmp_frame = (pj_int16_t*) pj_pool_zalloc(pool, 2 * samples_per_frame);
     PJ_ASSERT_RETURN(echo->tmp_frame != NULL, PJ_ENOMEM);
 
     /* Create temporary frame to receive residue */
-    echo->residue = pj_pool_zalloc(pool, sizeof(spx_int32_t) * 
+    echo->residue = (spx_int32_t*)
+		    pj_pool_zalloc(pool, sizeof(spx_int32_t) * 
 					    (samples_per_frame+1));
     PJ_ASSERT_RETURN(echo->residue != NULL, PJ_ENOMEM);
 
@@ -391,7 +392,7 @@
  */
 PJ_DEF(pj_status_t) speex_aec_destroy(void *state )
 {
-    speex_ec *echo = state;
+    speex_ec *echo = (speex_ec*) state;
 
     PJ_ASSERT_RETURN(echo && echo->state, PJ_EINVAL);
 
@@ -423,7 +424,7 @@
 PJ_DEF(pj_status_t) speex_aec_playback(void *state,
 				       pj_int16_t *play_frm )
 {
-    speex_ec *echo = state;
+    speex_ec *echo = (speex_ec*) state;
 
     /* Sanity checks */
     PJ_ASSERT_RETURN(echo && play_frm, PJ_EINVAL);
@@ -481,7 +482,7 @@
 				       pj_int16_t *rec_frm,
 				       unsigned options )
 {
-    speex_ec *echo = state;
+    speex_ec *echo = (speex_ec*) state;
     pj_status_t status = PJ_SUCCESS;
 
     /* Sanity checks */
@@ -551,7 +552,7 @@
 					   unsigned options,
 					   void *reserved )
 {
-    speex_ec *echo = state;
+    speex_ec *echo = (speex_ec*) state;
 
     /* Sanity checks */
     PJ_ASSERT_RETURN(echo && rec_frm && play_frm && options==0 &&
diff --git a/pjmedia/src/pjmedia/echo_suppress.c b/pjmedia/src/pjmedia/echo_suppress.c
index e299161..93a3cba 100644
--- a/pjmedia/src/pjmedia/echo_suppress.c
+++ b/pjmedia/src/pjmedia/echo_suppress.c
@@ -85,7 +85,7 @@
     PJ_UNUSED_ARG(options);
     PJ_UNUSED_ARG(latency_ms);
 
-    ec = pj_pool_zalloc(pool, sizeof(struct echo_supp));
+    ec = PJ_POOL_ZALLOC_T(pool, struct echo_supp);
     ec->samples_per_frame = samples_per_frame;
     ec->tail_ms = tail_ms;
 
@@ -119,7 +119,7 @@
 PJ_DEF(pj_status_t) echo_supp_playback( void *state,
 					pj_int16_t *play_frm )
 {
-    echo_supp *ec = state;
+    echo_supp *ec = (echo_supp*) state;
     pj_bool_t silence;
     pj_bool_t last_suppressing = ec->suppressing;
 
@@ -149,7 +149,7 @@
 				       pj_int16_t *rec_frm,
 				       unsigned options )
 {
-    echo_supp *ec = state;
+    echo_supp *ec = (echo_supp*) state;
     pj_time_val now;
     unsigned delay_ms;
 
@@ -185,7 +185,7 @@
 					   unsigned options,
 					   void *reserved )
 {
-    echo_supp *ec = state;
+    echo_supp *ec = (echo_supp*) state;
     pj_bool_t silence;
 
     PJ_UNUSED_ARG(options);
diff --git a/pjmedia/src/pjmedia/endpoint.c b/pjmedia/src/pjmedia/endpoint.c
index 65c6128..ea93e87 100644
--- a/pjmedia/src/pjmedia/endpoint.c
+++ b/pjmedia/src/pjmedia/endpoint.c
@@ -126,7 +126,7 @@
     if (!pool)
 	return PJ_ENOMEM;
 
-    endpt = pj_pool_zalloc(pool, sizeof(struct pjmedia_endpt));
+    endpt = PJ_POOL_ZALLOC_T(pool, struct pjmedia_endpt);
     endpt->pool = pool;
     endpt->pf = pf;
     endpt->ioqueue = ioqueue;
@@ -246,7 +246,7 @@
  */
 static int PJ_THREAD_FUNC worker_proc(void *arg)
 {
-    pjmedia_endpt *endpt = arg;
+    pjmedia_endpt *endpt = (pjmedia_endpt*) arg;
 
     while (!endpt->quit_flag) {
 	pj_time_val timeout = { 0, 500 };
@@ -293,7 +293,7 @@
 		     PJ_ETOOMANY);
 
     /* Create and initialize basic SDP session */
-    sdp = pj_pool_zalloc (pool, sizeof(pjmedia_sdp_session));
+    sdp = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_session);
 
     pj_gettimeofday(&tv);
     sdp->origin.user = pj_str("-");
@@ -307,7 +307,7 @@
     /* Since we only support one media stream at present, put the
      * SDP connection line in the session level.
      */
-    sdp->conn = pj_pool_zalloc (pool, sizeof(pjmedia_sdp_conn));
+    sdp->conn = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_conn);
     sdp->conn->net_type = STR_IN;
     sdp->conn->addr_type = STR_IP4;
     pj_strdup2(pool, &sdp->conn->addr, 
@@ -321,7 +321,7 @@
     /* Create media stream 0: */
 
     sdp->media_count = 1;
-    m = pj_pool_zalloc (pool, sizeof(pjmedia_sdp_media));
+    m = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_media);
     sdp->media[0] = m;
 
     /* Standard media info: */
@@ -337,9 +337,9 @@
     /* Add "rtcp" attribute */
 #if defined(PJMEDIA_HAS_RTCP_IN_SDP) && PJMEDIA_HAS_RTCP_IN_SDP!=0
     if (sock_info->rtcp_addr_name.sin_family != 0) {
-	attr = pj_pool_alloc(pool, sizeof(pjmedia_sdp_attr));
+	attr = PJ_POOL_ALLOC_T(pool, pjmedia_sdp_attr);
 	attr->name = pj_str("rtcp");
-	attr->value.ptr = pj_pool_alloc(pool, 80);
+	attr->value.ptr = (char*) pj_pool_alloc(pool, 80);
 	attr->value.slen = 
 	    pj_ansi_snprintf(attr->value.ptr, 80,
 			    "%u IN IP4 %s",
@@ -367,7 +367,7 @@
 					    &codec_param);
 	fmt = &m->desc.fmt[m->desc.fmt_count++];
 
-	fmt->ptr = pj_pool_alloc(pool, 8);
+	fmt->ptr = (char*) pj_pool_alloc(pool, 8);
 	fmt->slen = pj_utoa(codec_info->pt, fmt->ptr);
 
 	rtpmap.pt = *fmt;
@@ -399,10 +399,10 @@
 	/* Add fmtp mode where applicable */
 	if (codec_param.setting.dec_fmtp_mode != 0) {
 	    const pj_str_t fmtp = { "fmtp", 4 };
-	    attr = pj_pool_zalloc(pool, sizeof(pjmedia_sdp_attr));
+	    attr = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_attr);
 
 	    attr->name = fmtp;
-	    attr->value.ptr = pj_pool_alloc(pool, 32);
+	    attr->value.ptr = (char*) pj_pool_alloc(pool, 32);
 	    attr->value.slen = 
 		pj_ansi_snprintf( attr->value.ptr, 32,
 				  "%d mode=%d",
@@ -413,7 +413,7 @@
     }
 
     /* Add sendrecv attribute. */
-    attr = pj_pool_zalloc(pool, sizeof(pjmedia_sdp_attr));
+    attr = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_attr);
     attr->name = STR_SENDRECV;
     m->attr[m->attr_count++] = attr;
 
@@ -427,14 +427,14 @@
 	pj_str(PJMEDIA_RTP_PT_TELEPHONE_EVENTS_STR);
 
     /* Add rtpmap. */
-    attr = pj_pool_zalloc(pool, sizeof(pjmedia_sdp_attr));
+    attr = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_attr);
     attr->name = pj_str("rtpmap");
     attr->value = pj_str(PJMEDIA_RTP_PT_TELEPHONE_EVENTS_STR 
 			 " telephone-event/8000");
     m->attr[m->attr_count++] = attr;
 
     /* Add fmtp */
-    attr = pj_pool_zalloc(pool, sizeof(pjmedia_sdp_attr));
+    attr = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_attr);
     attr->name = pj_str("fmtp");
     attr->value = pj_str(PJMEDIA_RTP_PT_TELEPHONE_EVENTS_STR " 0-15");
     m->attr[m->attr_count++] = attr;
diff --git a/pjmedia/src/pjmedia/g711.c b/pjmedia/src/pjmedia/g711.c
index 0a8def0..b2c0819 100644
--- a/pjmedia/src/pjmedia/g711.c
+++ b/pjmedia/src/pjmedia/g711.c
@@ -319,9 +319,8 @@
     if (pj_list_empty(&g711_factory.codec_list)) {
 	struct g711_private *codec_priv;
 
-	codec = pj_pool_alloc(g711_factory.pool, sizeof(pjmedia_codec));
-	codec_priv = pj_pool_zalloc(g711_factory.pool, 
-				    sizeof(struct g711_private));
+	codec = PJ_POOL_ALLOC_T(g711_factory.pool, pjmedia_codec);
+	codec_priv = PJ_POOL_ZALLOC_T(g711_factory.pool, struct g711_private);
 	if (!codec || !codec_priv) {
 	    pj_mutex_unlock(g711_factory.mutex);
 	    return PJ_ENOMEM;
@@ -371,7 +370,7 @@
 static pj_status_t g711_dealloc_codec(pjmedia_codec_factory *factory, 
 				      pjmedia_codec *codec )
 {
-    struct g711_private *priv = codec->codec_data;
+    struct g711_private *priv = (struct g711_private*) codec->codec_data;
     int i = 0;
 
     PJ_ASSERT_RETURN(factory==&g711_factory.base, PJ_EINVAL);
@@ -420,7 +419,7 @@
 static pj_status_t g711_open(pjmedia_codec *codec, 
 			     pjmedia_codec_param *attr )
 {
-    struct g711_private *priv = codec->codec_data;
+    struct g711_private *priv = (struct g711_private*) codec->codec_data;
     priv->pt = attr->info.pt;
 #if !PLC_DISABLED
     priv->plc_enabled = (attr->setting.plc != 0);
@@ -439,7 +438,7 @@
 static pj_status_t  g711_modify(pjmedia_codec *codec, 
 			        const pjmedia_codec_param *attr )
 {
-    struct g711_private *priv = codec->codec_data;
+    struct g711_private *priv = (struct g711_private*) codec->codec_data;
 
     if (attr->info.pt != priv->pt)
 	return PJMEDIA_EINVALIDPT;
@@ -487,7 +486,7 @@
 				struct pjmedia_frame *output)
 {
     pj_int16_t *samples = (pj_int16_t*) input->buf;
-    struct g711_private *priv = codec->codec_data;
+    struct g711_private *priv = (struct g711_private*) codec->codec_data;
 
     /* Check output buffer length */
     if (output_buf_len < (input->size >> 1))
@@ -501,7 +500,8 @@
 	silence_period = pj_timestamp_diff32(&priv->last_tx,
 					     &input->timestamp);
 
-	is_silence = pjmedia_silence_det_detect(priv->vad, input->buf, 
+	is_silence = pjmedia_silence_det_detect(priv->vad, 
+						(const pj_int16_t*) input->buf, 
 						(input->size >> 1), NULL);
 	if (is_silence && 
 	    PJMEDIA_CODEC_MAX_SILENCE_PERIOD != -1 &&
@@ -520,7 +520,7 @@
     /* Encode */
     if (priv->pt == PJMEDIA_RTP_PT_PCMA) {
 	unsigned i, n;
-	pj_uint8_t *dst = output->buf;
+	pj_uint8_t *dst = (pj_uint8_t*) output->buf;
 
 	n = (input->size >> 1);
 	for (i=0; i!=n; ++i, ++dst) {
@@ -528,7 +528,7 @@
 	}
     } else if (priv->pt == PJMEDIA_RTP_PT_PCMU) {
 	unsigned i, n;
-	pj_uint8_t *dst = output->buf;
+	pj_uint8_t *dst = (pj_uint8_t*) output->buf;
 
 	n = (input->size >> 1);
 	for (i=0; i!=n; ++i, ++dst) {
@@ -550,7 +550,7 @@
 				unsigned output_buf_len, 
 				struct pjmedia_frame *output)
 {
-    struct g711_private *priv = codec->codec_data;
+    struct g711_private *priv = (struct g711_private*) codec->codec_data;
 
     /* Check output buffer length */
     PJ_ASSERT_RETURN(output_buf_len >= (input->size << 1),
@@ -563,16 +563,16 @@
     /* Decode */
     if (priv->pt == PJMEDIA_RTP_PT_PCMA) {
 	unsigned i;
-	pj_uint8_t *src = input->buf;
-	pj_uint16_t *dst = output->buf;
+	pj_uint8_t *src = (pj_uint8_t*) input->buf;
+	pj_uint16_t *dst = (pj_uint16_t*) output->buf;
 
 	for (i=0; i!=input->size; ++i) {
 	    *dst++ = (pj_uint16_t) pjmedia_alaw2linear(*src++);
 	}
     } else if (priv->pt == PJMEDIA_RTP_PT_PCMU) {
 	unsigned i;
-	pj_uint8_t *src = input->buf;
-	pj_uint16_t *dst = output->buf;
+	pj_uint8_t *src = (pj_uint8_t*) input->buf;
+	pj_uint16_t *dst = (pj_uint16_t*) output->buf;
 
 	for (i=0; i!=input->size; ++i) {
 	    *dst++ = (pj_uint16_t) pjmedia_ulaw2linear(*src++);
diff --git a/pjmedia/src/pjmedia/jbuf.c b/pjmedia/src/pjmedia/jbuf.c
index 5a52b13..7d840a9 100644
--- a/pjmedia/src/pjmedia/jbuf.c
+++ b/pjmedia/src/pjmedia/jbuf.c
@@ -30,7 +30,7 @@
 #define THIS_FILE   "jbuf.c"
 
 
-struct jb_framelist
+typedef struct jb_framelist_t
 {
     char	*flist_buffer;
     int		*flist_frame_type;
@@ -40,15 +40,13 @@
     unsigned	 flist_head;
     unsigned	 flist_tail;
     unsigned	 flist_origin;
-};
+} jb_framelist_t;
 
 
-typedef struct jb_framelist jb_framelist;
-
 struct pjmedia_jbuf
 {
     pj_str_t	    name;		  // jitter buffer name
-    jb_framelist    jb_framelist;
+    jb_framelist_t  jb_framelist;
     pj_size_t	    jb_frame_size;	  // frame size	
     unsigned	    jb_frame_ptime;	  // frame duration.
     pj_size_t	    jb_max_count;	  // max frames in the jitter framelist->flist_buffer
@@ -92,21 +90,22 @@
 
 
 static pj_status_t jb_framelist_init( pj_pool_t *pool,
-				      jb_framelist *framelist,
+				      jb_framelist_t *framelist,
 				      unsigned frame_size,
 				      unsigned max_count) 
 {
     PJ_ASSERT_RETURN(pool && framelist, PJ_EINVAL);
 
-    pj_bzero(framelist, sizeof(jb_framelist));
+    pj_bzero(framelist, sizeof(jb_framelist_t));
 
     framelist->flist_frame_size = frame_size;
     framelist->flist_max_count = max_count;
-    framelist->flist_buffer = pj_pool_zalloc(pool,
+    framelist->flist_buffer = (char*) 
+			      pj_pool_zalloc(pool,
 					     framelist->flist_frame_size * 
 					     framelist->flist_max_count);
 
-    framelist->flist_frame_type = 
+    framelist->flist_frame_type = (int*)
 	pj_pool_zalloc(pool, sizeof(framelist->flist_frame_type[0]) * 
 				framelist->flist_max_count);
 
@@ -116,14 +115,14 @@
 
 }
 
-static pj_status_t jb_framelist_destroy(jb_framelist *framelist) 
+static pj_status_t jb_framelist_destroy(jb_framelist_t *framelist) 
 {
     PJ_UNUSED_ARG(framelist);
     return PJ_SUCCESS;
 }
 
 
-static unsigned jb_framelist_size(jb_framelist *framelist) 
+static unsigned jb_framelist_size(jb_framelist_t *framelist) 
 {
     if (framelist->flist_tail == framelist->flist_head) {
 	return framelist->flist_empty ? 0 : framelist->flist_max_count;
@@ -134,7 +133,7 @@
 }
 
 
-static pj_bool_t jb_framelist_get(jb_framelist *framelist,
+static pj_bool_t jb_framelist_get(jb_framelist_t *framelist,
 				  void *frame,
 				  pjmedia_jb_frame_type *p_type) 
 {
@@ -167,7 +166,7 @@
 }
 
 
-static void jb_framelist_remove_head( jb_framelist *framelist,
+static void jb_framelist_remove_head( jb_framelist_t *framelist,
 				      unsigned count) 
 {
     unsigned cur_size;
@@ -214,7 +213,7 @@
 }
 
 
-static pj_bool_t jb_framelist_put_at(jb_framelist *framelist,
+static pj_bool_t jb_framelist_put_at(jb_framelist_t *framelist,
 				     unsigned index,
 				     const void *frame,
 				     unsigned frame_size) 
@@ -282,7 +281,7 @@
     pjmedia_jbuf *jb;
     pj_status_t status;
 
-    jb = pj_pool_zalloc(pool, sizeof(pjmedia_jbuf));
+    jb = PJ_POOL_ZALLOC_T(pool, pjmedia_jbuf);
 
     status = jb_framelist_init(pool, &jb->jb_framelist, frame_size, max_count);
     if (status != PJ_SUCCESS)
diff --git a/pjmedia/src/pjmedia/master_port.c b/pjmedia/src/pjmedia/master_port.c
index ffab40e..85099a4 100644
--- a/pjmedia/src/pjmedia/master_port.c
+++ b/pjmedia/src/pjmedia/master_port.c
@@ -84,7 +84,7 @@
 
 
     /* Create the master port instance */
-    m = pj_pool_zalloc(pool, sizeof(pjmedia_master_port));
+    m = PJ_POOL_ZALLOC_T(pool, pjmedia_master_port);
     m->options = options;
     m->u_port = u_port;
     m->d_port = d_port;
@@ -144,7 +144,7 @@
  */
 static void clock_callback(const pj_timestamp *ts, void *user_data)
 {
-    pjmedia_master_port *m = user_data;
+    pjmedia_master_port *m = (pjmedia_master_port*) user_data;
     pjmedia_frame frame;
     pj_status_t status;
 
diff --git a/pjmedia/src/pjmedia/mem_capture.c b/pjmedia/src/pjmedia/mem_capture.c
index d5e7481..074f377 100644
--- a/pjmedia/src/pjmedia/mem_capture.c
+++ b/pjmedia/src/pjmedia/mem_capture.c
@@ -73,7 +73,7 @@
     PJ_ASSERT_RETURN(bits_per_sample == 16, PJ_EINVAL);
 
 
-    rec = pj_pool_zalloc(pool, sizeof(struct mem_rec));
+    rec = PJ_POOL_ZALLOC_T(pool, struct mem_rec);
     PJ_ASSERT_RETURN(rec != NULL, PJ_ENOMEM);
 
     /* Create the rec */
diff --git a/pjmedia/src/pjmedia/mem_player.c b/pjmedia/src/pjmedia/mem_player.c
index a0842a4..95add9a 100644
--- a/pjmedia/src/pjmedia/mem_player.c
+++ b/pjmedia/src/pjmedia/mem_player.c
@@ -75,7 +75,7 @@
     PJ_ASSERT_RETURN(bits_per_sample == 16, PJ_EINVAL);
 
 
-    port = pj_pool_zalloc(pool, sizeof(struct mem_player));
+    port = PJ_POOL_ZALLOC_T(pool, struct mem_player);
     PJ_ASSERT_RETURN(port != NULL, PJ_ENOMEM);
 
     /* Create the port */
diff --git a/pjmedia/src/pjmedia/null_port.c b/pjmedia/src/pjmedia/null_port.c
index 16258f9..29ca26f 100644
--- a/pjmedia/src/pjmedia/null_port.c
+++ b/pjmedia/src/pjmedia/null_port.c
@@ -44,7 +44,7 @@
 
     PJ_ASSERT_RETURN(pool && p_port, PJ_EINVAL);
 
-    port = pj_pool_zalloc(pool, sizeof(pjmedia_port));
+    port = PJ_POOL_ZALLOC_T(pool, pjmedia_port);
     PJ_ASSERT_RETURN(pool != NULL, PJ_ENOMEM);
 
     pjmedia_port_info_init(&port->info, &name, SIGNATURE, sampling_rate,
@@ -83,7 +83,8 @@
     frame->type = PJMEDIA_FRAME_TYPE_AUDIO;
     frame->size = this_port->info.samples_per_frame * 2;
     frame->timestamp.u32.lo += this_port->info.samples_per_frame;
-    pjmedia_zero_samples(frame->buf, this_port->info.samples_per_frame);
+    pjmedia_zero_samples((pj_int16_t*)frame->buf, 
+			 this_port->info.samples_per_frame);
 
     return PJ_SUCCESS;
 }
diff --git a/pjmedia/src/pjmedia/pasound.c b/pjmedia/src/pjmedia/pasound.c
index 2788749..a2ec627 100644
--- a/pjmedia/src/pjmedia/pasound.c
+++ b/pjmedia/src/pjmedia/pasound.c
@@ -84,7 +84,7 @@
 			      PaStreamCallbackFlags statusFlags,
 			      void *userData )
 {
-    pjmedia_snd_stream *stream = userData;
+    pjmedia_snd_stream *stream = (pjmedia_snd_stream*) userData;
     pj_status_t status;
 
     PJ_UNUSED_ARG(output);
@@ -130,7 +130,7 @@
 			     PaStreamCallbackFlags statusFlags,
 			     void *userData )
 {
-    pjmedia_snd_stream *stream = userData;
+    pjmedia_snd_stream *stream = (pjmedia_snd_stream*) userData;
     pj_status_t status;
     unsigned size = frameCount * stream->bytes_per_sample *
 		    stream->channel_count;
@@ -388,7 +388,7 @@
     if (!pool)
 	return PJ_ENOMEM;
 
-    stream = pj_pool_zalloc(pool, sizeof(*stream));
+    stream = PJ_POOL_ZALLOC_T(pool, pjmedia_snd_stream);
     stream->pool = pool;
     pj_strdup2_with_null(pool, &stream->name, paDevInfo->name);
     stream->dir = PJMEDIA_DIR_CAPTURE;
@@ -484,7 +484,7 @@
     if (!pool)
 	return PJ_ENOMEM;
 
-    stream = pj_pool_calloc(pool, 1, sizeof(*stream));
+    stream = PJ_POOL_ZALLOC_T(pool, pjmedia_snd_stream);
     stream->pool = pool;
     pj_strdup2_with_null(pool, &stream->name, paDevInfo->name);
     stream->dir = stream->dir = PJMEDIA_DIR_PLAYBACK;
@@ -604,7 +604,7 @@
     if (!pool)
 	return PJ_ENOMEM;
 
-    stream = pj_pool_zalloc(pool, sizeof(*stream));
+    stream = PJ_POOL_ZALLOC_T(pool, pjmedia_snd_stream);
     stream->pool = pool;
     pj_strdup2_with_null(pool, &stream->name, paRecDevInfo->name);
     stream->dir = PJMEDIA_DIR_CAPTURE_PLAYBACK;
diff --git a/pjmedia/src/pjmedia/plc_common.c b/pjmedia/src/pjmedia/plc_common.c
index 04ed88c..764ad0a 100644
--- a/pjmedia/src/pjmedia/plc_common.c
+++ b/pjmedia/src/pjmedia/plc_common.c
@@ -86,7 +86,7 @@
 
     PJ_UNUSED_ARG(options);
 
-    plc = pj_pool_zalloc(pool, sizeof(pjmedia_plc));
+    plc = PJ_POOL_ZALLOC_T(pool, pjmedia_plc);
 
     if (0)
 	;
@@ -150,17 +150,17 @@
 
     PJ_UNUSED_ARG(clock_rate);
 
-    o = pj_pool_alloc(pool, sizeof(struct replay_plc));
+    o = PJ_POOL_ALLOC_T(pool, struct replay_plc);
     o->size = samples_per_frame * 2;
     o->replay_cnt = 0;
-    o->frame = pj_pool_zalloc(pool, o->size);
+    o->frame = (pj_int16_t*) pj_pool_zalloc(pool, o->size);
 
     return o;
 }
 
 static void plc_replay_save(void *plc, pj_int16_t *frame)
 {
-    struct replay_plc *o = plc;
+    struct replay_plc *o = (struct replay_plc*) plc;
 
     pj_memcpy(o->frame, frame, o->size);
     o->replay_cnt = 0;
@@ -168,7 +168,7 @@
 
 static void plc_replay_generate(void *plc, pj_int16_t *frame)
 {
-    struct replay_plc *o = plc;
+    struct replay_plc *o = (struct replay_plc*) plc;
     unsigned i, count;
     pj_int16_t *samp;
 
diff --git a/pjmedia/src/pjmedia/resample_port.c b/pjmedia/src/pjmedia/resample_port.c
index 913f150..8898d6c 100644
--- a/pjmedia/src/pjmedia/resample_port.c
+++ b/pjmedia/src/pjmedia/resample_port.c
@@ -69,7 +69,7 @@
 	    dn_port->info.clock_rate;
     
     /* Create and initialize port. */
-    rport = pj_pool_zalloc(pool, sizeof(struct resample_port));
+    rport = PJ_POOL_ZALLOC_T(pool, struct resample_port);
     PJ_ASSERT_RETURN(rport != NULL, PJ_ENOMEM);
 
     pjmedia_port_info_init(&rport->base.info, &name, SIGNATURE, clock_rate,
@@ -84,10 +84,12 @@
      * We need separate buffer for get_frame() and put_frame() since
      * both functions may run simultaneously.
      */
-    rport->get_buf = pj_pool_alloc(pool, dn_port->info.bytes_per_frame);
+    rport->get_buf = (pj_int16_t*)
+		     pj_pool_alloc(pool, dn_port->info.bytes_per_frame);
     PJ_ASSERT_RETURN(rport->get_buf != NULL, PJ_ENOMEM);
 
-    rport->put_buf = pj_pool_alloc(pool, dn_port->info.bytes_per_frame);
+    rport->put_buf = (pj_int16_t*)
+		     pj_pool_alloc(pool, dn_port->info.bytes_per_frame);
     PJ_ASSERT_RETURN(rport->put_buf != NULL, PJ_ENOMEM);
 
 
@@ -139,7 +141,8 @@
     }
 
     if (frame->type == PJMEDIA_FRAME_TYPE_AUDIO) {
-	pjmedia_resample_run( rport->resample_put, frame->buf, 
+	pjmedia_resample_run( rport->resample_put, 
+			      (const pj_int16_t*) frame->buf, 
 			      rport->put_buf);
 
 	downstream_frame.buf = rport->put_buf;
@@ -188,7 +191,9 @@
 	return PJ_SUCCESS;
     }
 
-    pjmedia_resample_run( rport->resample_get, tmp_frame.buf, frame->buf);
+    pjmedia_resample_run( rport->resample_get, 
+			  (const pj_int16_t*) tmp_frame.buf, 
+			  (pj_int16_t*) frame->buf);
 
     frame->size = rport->base.info.bytes_per_frame;
     frame->type = PJMEDIA_FRAME_TYPE_AUDIO;
diff --git a/pjmedia/src/pjmedia/resample_resample.c b/pjmedia/src/pjmedia/resample_resample.c
index 9caaa31..e013748 100644
--- a/pjmedia/src/pjmedia/resample_resample.c
+++ b/pjmedia/src/pjmedia/resample_resample.c
@@ -58,7 +58,7 @@
     PJ_ASSERT_RETURN(pool && p_resample && rate_in &&
 		     rate_out && samples_per_frame, PJ_EINVAL);
 
-    resample = pj_pool_alloc(pool, sizeof(pjmedia_resample));
+    resample = PJ_POOL_ALLOC_T(pool, pjmedia_resample);
     PJ_ASSERT_RETURN(resample, PJ_ENOMEM);
 
     PJ_UNUSED_ARG(channel_count);
@@ -88,7 +88,7 @@
 	resample->xoff = res_GetXOFF(resample->factor, (char)large_filter);
 
 	size = (samples_per_frame + 2*resample->xoff) * sizeof(pj_int16_t);
-	resample->buffer = pj_pool_alloc(pool, size);
+	resample->buffer = (pj_int16_t*) pj_pool_alloc(pool, size);
 	PJ_ASSERT_RETURN(resample->buffer, PJ_ENOMEM);
 
 	pjmedia_zero_samples(resample->buffer, resample->xoff*2);
diff --git a/pjmedia/src/pjmedia/rtcp.c b/pjmedia/src/pjmedia/rtcp.c
index 0223e34..0c48b3f 100644
--- a/pjmedia/src/pjmedia/rtcp.c
+++ b/pjmedia/src/pjmedia/rtcp.c
@@ -140,7 +140,7 @@
     sess->rtp_last_ts = (unsigned)-1;
 
     /* Name */
-    sess->name = name ? name : THIS_FILE,
+    sess->name = name ? name : (char*)THIS_FILE,
 
     /* Set clock rate */
     sess->clock_rate = clock_rate;
@@ -332,7 +332,7 @@
 				   const void *pkt,
 				   pj_size_t size)
 {
-    const pjmedia_rtcp_common *common = pkt;
+    pjmedia_rtcp_common *common = (pjmedia_rtcp_common*) pkt;
     const pjmedia_rtcp_rr *rr = NULL;
     const pjmedia_rtcp_sr *sr = NULL;
     pj_uint32_t last_loss, jitter_samp, jitter;
diff --git a/pjmedia/src/pjmedia/sdp.c b/pjmedia/src/pjmedia/sdp.c
index e0a66fc..25d8683 100644
--- a/pjmedia/src/pjmedia/sdp.c
+++ b/pjmedia/src/pjmedia/sdp.c
@@ -460,7 +460,7 @@
 			   (int)rtpmap->param.slen,
 			   rtpmap->param.ptr);
 
-    if (len < 1 || len > sizeof(tempbuf))
+    if (len < 1 || len > (int)sizeof(tempbuf))
 	return PJMEDIA_SDP_ERTPMAPTOOLONG;
 
     attr->value.slen = len;
diff --git a/pjmedia/src/pjmedia/sdp_neg.c b/pjmedia/src/pjmedia/sdp_neg.c
index 5975eca..ecbba9e 100644
--- a/pjmedia/src/pjmedia/sdp_neg.c
+++ b/pjmedia/src/pjmedia/sdp_neg.c
@@ -56,7 +56,7 @@
  */
 PJ_DEF(const char*) pjmedia_sdp_neg_state_str(pjmedia_sdp_neg_state state)
 {
-    if (state >=0 && state < PJ_ARRAY_SIZE(state_str))
+    if (state >=0 && state < (pjmedia_sdp_neg_state)PJ_ARRAY_SIZE(state_str))
 	return state_str[state];
 
     return "<?UNKNOWN?>";
diff --git a/pjmedia/src/pjmedia/session.c b/pjmedia/src/pjmedia/session.c
index 6e29e25..72e55a9 100644
--- a/pjmedia/src/pjmedia/session.c
+++ b/pjmedia/src/pjmedia/session.c
@@ -421,7 +421,7 @@
 
   
     /* Now that we have codec info, get the codec param. */
-    si->param = pj_pool_alloc(pool, sizeof(*si->param));
+    si->param = PJ_POOL_ALLOC_T(pool, pjmedia_codec_param);
     status = pjmedia_codec_mgr_get_default_param(mgr, &si->fmt, si->param);
     if (status != PJ_SUCCESS)
 	return status;
@@ -532,7 +532,7 @@
 				      PJMEDIA_SESSION_INC);
     PJ_ASSERT_RETURN(pool != NULL, PJ_ENOMEM);
 
-    session = pj_pool_zalloc(pool, sizeof(pjmedia_session));
+    session = PJ_POOL_ZALLOC_T(pool, pjmedia_session);
     session->pool = pool;
     session->endpt = endpt;
     session->stream_cnt = si->stream_cnt;
diff --git a/pjmedia/src/pjmedia/silencedet.c b/pjmedia/src/pjmedia/silencedet.c
index 6cc5e53..2fabf4f 100644
--- a/pjmedia/src/pjmedia/silencedet.c
+++ b/pjmedia/src/pjmedia/silencedet.c
@@ -68,7 +68,7 @@
 
     PJ_ASSERT_RETURN(pool && p_sd, PJ_EINVAL);
 
-    sd = pj_pool_zalloc(pool, sizeof(struct pjmedia_silence_det));
+    sd = PJ_POOL_ZALLOC_T(pool, pjmedia_silence_det);
 
     pj_ansi_strncpy(sd->objname, THIS_FILE, PJ_MAX_OBJ_NAME);
     sd->objname[PJ_MAX_OBJ_NAME-1] = '\0';
diff --git a/pjmedia/src/pjmedia/sound_port.c b/pjmedia/src/pjmedia/sound_port.c
index 1f64344..459e549 100644
--- a/pjmedia/src/pjmedia/sound_port.c
+++ b/pjmedia/src/pjmedia/sound_port.c
@@ -73,7 +73,7 @@
 			   /* out */  void *output,
 			   /* out */  unsigned size)
 {
-    pjmedia_snd_port *snd_port = user_data;
+    pjmedia_snd_port *snd_port = (pjmedia_snd_port*) user_data;
     pjmedia_port *port;
     pjmedia_frame frame;
     pj_status_t status;
@@ -111,7 +111,7 @@
 #endif
 
     if (snd_port->plc)
-	pjmedia_plc_save(snd_port->plc, output);
+	pjmedia_plc_save(snd_port->plc, (pj_int16_t*) output);
 
     if (snd_port->ec_state) {
 	if (snd_port->ec_suspended) {
@@ -120,7 +120,7 @@
 	    PJ_LOG(4,(THIS_FILE, "EC activated"));
 	}
 	snd_port->ec_suspend_count = 0;
-	pjmedia_echo_playback(snd_port->ec_state, output);
+	pjmedia_echo_playback(snd_port->ec_state, (pj_int16_t*)output);
     }
 
 
@@ -136,14 +136,14 @@
 	}
 	if (snd_port->ec_state) {
 	    /* To maintain correct delay in EC */
-	    pjmedia_echo_playback(snd_port->ec_state, output);
+	    pjmedia_echo_playback(snd_port->ec_state, (pj_int16_t*)output);
 	}
     }
 
     /* Apply PLC */
     if (snd_port->plc) {
 
-	pjmedia_plc_generate(snd_port->plc, output);
+	pjmedia_plc_generate(snd_port->plc, (pj_int16_t*) output);
 #ifdef SIMULATE_LOST_PCT
 	PJ_LOG(4,(THIS_FILE, "Lost frame generated"));
 #endif
@@ -165,7 +165,7 @@
 			  /* in */   void *input,
 			  /* in*/    unsigned size)
 {
-    pjmedia_snd_port *snd_port = user_data;
+    pjmedia_snd_port *snd_port = (pjmedia_snd_port*) user_data;
     pjmedia_port *port;
     pjmedia_frame frame;
 
@@ -181,7 +181,7 @@
 
     /* Cancel echo */
     if (snd_port->ec_state && !snd_port->ec_suspended) {
-	pjmedia_echo_capture(snd_port->ec_state, input, 0);
+	pjmedia_echo_capture(snd_port->ec_state, (pj_int16_t*) input, 0);
     }
 
     frame.buf = (void*)input;
@@ -326,7 +326,7 @@
 
     PJ_ASSERT_RETURN(pool && p_port, PJ_EINVAL);
 
-    snd_port = pj_pool_zalloc(pool, sizeof(pjmedia_snd_port));
+    snd_port = PJ_POOL_ZALLOC_T(pool, pjmedia_snd_port);
     PJ_ASSERT_RETURN(snd_port, PJ_ENOMEM);
 
     snd_port->rec_id = rec_id;
@@ -365,7 +365,7 @@
 
     PJ_ASSERT_RETURN(pool && p_port, PJ_EINVAL);
 
-    snd_port = pj_pool_zalloc(pool, sizeof(pjmedia_snd_port));
+    snd_port = PJ_POOL_ZALLOC_T(pool, pjmedia_snd_port);
     PJ_ASSERT_RETURN(snd_port, PJ_ENOMEM);
 
     snd_port->rec_id = dev_id;
@@ -402,7 +402,7 @@
 
     PJ_ASSERT_RETURN(pool && p_port, PJ_EINVAL);
 
-    snd_port = pj_pool_zalloc(pool, sizeof(pjmedia_snd_port));
+    snd_port = PJ_POOL_ZALLOC_T(pool, pjmedia_snd_port);
     PJ_ASSERT_RETURN(snd_port, PJ_ENOMEM);
 
     snd_port->play_id = dev_id;
diff --git a/pjmedia/src/pjmedia/splitcomb.c b/pjmedia/src/pjmedia/splitcomb.c
index 53ec175..a3d8e05 100644
--- a/pjmedia/src/pjmedia/splitcomb.c
+++ b/pjmedia/src/pjmedia/splitcomb.c
@@ -58,7 +58,7 @@
     struct {
 	pjmedia_port *port;
 	pj_bool_t     reversed;
-    } *port_desc;
+    } port_desc[64];
 
     /* Temporary buffers needed to extract mono frame from
      * multichannel frame. We could use stack for this, but this
@@ -143,16 +143,18 @@
     *p_splitcomb = NULL;
 
     /* Create the splitter/combiner structure */
-    sc = pj_pool_zalloc(pool, sizeof(struct splitcomb));
+    sc = PJ_POOL_ZALLOC_T(pool, struct splitcomb);
     PJ_ASSERT_RETURN(sc != NULL, PJ_ENOMEM);
 
     /* Create temporary buffers */
-    sc->get_buf = pj_pool_alloc(pool, samples_per_frame * 
+    sc->get_buf = (TMP_SAMP_TYPE*)
+		  pj_pool_alloc(pool, samples_per_frame * 
 				      sizeof(TMP_SAMP_TYPE) /
 				      channel_count);
     PJ_ASSERT_RETURN(sc->get_buf, PJ_ENOMEM);
 
-    sc->put_buf = pj_pool_alloc(pool, samples_per_frame * 
+    sc->put_buf = (TMP_SAMP_TYPE*)
+		  pj_pool_alloc(pool, samples_per_frame * 
 				      sizeof(TMP_SAMP_TYPE) /
 				      channel_count);
     PJ_ASSERT_RETURN(sc->put_buf, PJ_ENOMEM);
@@ -170,7 +172,10 @@
     sc->base.on_destroy = &on_destroy;
 
     /* Init ports array */
+    /*
     sc->port_desc = pj_pool_zalloc(pool, channel_count*sizeof(*sc->port_desc));
+    */
+    pj_bzero(sc->port_desc, sizeof(sc->port_desc));
 
     /* Done for now */
     *p_splitcomb = &sc->base;
@@ -237,7 +242,7 @@
     PJ_UNUSED_ARG(options);
 
     /* Create the port */
-    rport = pj_pool_zalloc(pool, sizeof(struct reverse_port));
+    rport = PJ_POOL_ZALLOC_T(pool, struct reverse_port);
     rport->parent = sc;
     rport->ch_num = ch_num;
 
@@ -261,14 +266,16 @@
 
     /* Create put buffers */
     for (i=0; i<rport->buf_cnt; ++i) {
-	rport->dnstream_buf[i] = pj_pool_zalloc(pool, port->info.bytes_per_frame);
+	rport->dnstream_buf[i]=(pj_int16_t*)
+                               pj_pool_zalloc(pool, port->info.bytes_per_frame);
 	PJ_ASSERT_RETURN(rport->dnstream_buf[i], PJ_ENOMEM);
     }
     rport->dn_write_pos = rport->buf_cnt/2;
 
     /* Create get buffers */
     for (i=0; i<rport->buf_cnt; ++i) {
-	rport->upstream_buf[i] = pj_pool_zalloc(pool, 
+	rport->upstream_buf[i] = (pj_int16_t*)
+				 pj_pool_zalloc(pool, 
 						port->info.bytes_per_frame);
 	PJ_ASSERT_RETURN(rport->upstream_buf[i], PJ_ENOMEM);
     }
@@ -366,7 +373,7 @@
 	    pjmedia_frame mono_frame;
 
 	    /* Extract the mono frame */
-	    extract_mono_frame(frame->buf, sc->put_buf, ch, 
+	    extract_mono_frame((const pj_int16_t*)frame->buf, sc->put_buf, ch, 
 			       this_port->info.channel_count, 
 			       frame->size * 8 / 
 				 this_port->info.bits_per_sample /
@@ -404,7 +411,7 @@
 	    }
 
 	    /* Extract mono-frame and put it in downstream buffer */
-	    extract_mono_frame(frame->buf, 
+	    extract_mono_frame((const pj_int16_t*)frame->buf, 
 			       rport->dnstream_buf[rport->dn_write_pos],
 			       ch, this_port->info.channel_count, 
 			       frame->size * 8 / 
@@ -433,7 +440,8 @@
     pj_bool_t has_frame = PJ_FALSE;
 
     /* Clear output frame */
-    pjmedia_zero_samples(frame->buf, this_port->info.samples_per_frame);
+    pjmedia_zero_samples((pj_int16_t*)frame->buf, 
+			 this_port->info.samples_per_frame);
 
     /* Read frame from each port */
     for (ch=0; ch < this_port->info.channel_count; ++ch) {
@@ -459,7 +467,8 @@
 	    }
 
 	    /* Combine the mono frame into multichannel frame */
-	    store_mono_frame(mono_frame.buf, frame->buf, ch,
+	    store_mono_frame((const pj_int16_t*)mono_frame.buf, 
+			     (pj_int16_t*)frame->buf, ch,
 			     this_port->info.channel_count,
 			     mono_frame.size * 8 /
 				this_port->info.bits_per_sample);
@@ -494,8 +503,8 @@
 		       rport->up_read_pos));
 
 	    /* Combine the mono frame into multichannel frame */
-	    store_mono_frame(rport->upstream_buf[rport->up_read_pos], 
-			     frame->buf, ch,
+	    store_mono_frame((const pj_int16_t*)rport->upstream_buf[rport->up_read_pos], 
+			     (pj_int16_t*)frame->buf, ch,
 			     this_port->info.channel_count,
 			     port->info.samples_per_frame);
 
@@ -579,7 +588,7 @@
 
 
     pjmedia_copy_samples(rport->upstream_buf[rport->up_write_pos],
-			 frame->buf, count);
+			 (const pj_int16_t*) frame->buf, count);
     rport->up_write_pos = (rport->up_write_pos+1) % rport->buf_cnt;
 
     return PJ_SUCCESS;
@@ -621,7 +630,7 @@
     }
 
     /* Get the samples from the circular buffer */
-    pjmedia_copy_samples(frame->buf, 
+    pjmedia_copy_samples((pj_int16_t*)frame->buf, 
 			 rport->dnstream_buf[rport->dn_read_pos],
 			 count);
     rport->dn_read_pos = (rport->dn_read_pos+1) % rport->buf_cnt;
diff --git a/pjmedia/src/pjmedia/stream.c b/pjmedia/src/pjmedia/stream.c
index acc79b9..fec74e9 100644
--- a/pjmedia/src/pjmedia/stream.c
+++ b/pjmedia/src/pjmedia/stream.c
@@ -166,7 +166,7 @@
  */
 static pj_status_t get_frame( pjmedia_port *port, pjmedia_frame *frame)
 {
-    pjmedia_stream *stream = port->port_data.pdata;
+    pjmedia_stream *stream = (pjmedia_stream*) port->port_data.pdata;
     pjmedia_channel *channel = stream->dec;
     unsigned samples_count, samples_per_frame, samples_required;
     pj_int16_t *p_out_samp;
@@ -191,7 +191,7 @@
 			stream->codec_param.info.clock_rate *
 			stream->codec_param.info.channel_cnt / 
 			1000;
-    p_out_samp = frame->buf;
+    p_out_samp = (pj_int16_t*) frame->buf;
 
     for (samples_count=0; samples_count < samples_required; 
 	 samples_count += samples_per_frame) 
@@ -382,7 +382,7 @@
 
     pj_assert(sizeof(pjmedia_rtp_dtmf_event) == 4);
 
-    event = frame_out->buf;
+    event = (pjmedia_rtp_dtmf_event*) frame_out->buf;
     cur_ts = pj_ntohl(stream->enc->rtp.out_hdr.ts);
     duration = cur_ts - digit->start_ts;
 
@@ -514,7 +514,7 @@
 static pj_status_t put_frame_imp( pjmedia_port *port, 
 				  const pjmedia_frame *frame )
 {
-    pjmedia_stream *stream = port->port_data.pdata;
+    pjmedia_stream *stream = (pjmedia_stream*) port->port_data.pdata;
     pjmedia_channel *channel = stream->enc;
     pj_status_t status = 0;
     pjmedia_frame frame_out;
@@ -665,7 +665,7 @@
 
     /* Set RTP marker bit if currently not streaming */
     if (stream->is_streaming == PJ_FALSE) {
-	pjmedia_rtp_hdr *rtp = channel->out_pkt;
+	pjmedia_rtp_hdr *rtp = (pjmedia_rtp_hdr*) channel->out_pkt;
 
 	rtp->m = 1;
 	PJ_LOG(5,(stream->port.info.name.ptr,"Start talksprut.."));
@@ -697,7 +697,7 @@
 static pj_status_t put_frame( pjmedia_port *port, 
 			      const pjmedia_frame *frame )
 {
-    pjmedia_stream *stream = port->port_data.pdata;
+    pjmedia_stream *stream = (pjmedia_stream*) port->port_data.pdata;
     pjmedia_frame tmp_zero_frame;
     unsigned samples_per_frame;
 
@@ -830,7 +830,7 @@
 static void handle_incoming_dtmf( pjmedia_stream *stream, 
 				  const void *payload, unsigned payloadlen)
 {
-    const pjmedia_rtp_dtmf_event *event = payload;
+    pjmedia_rtp_dtmf_event *event = (pjmedia_rtp_dtmf_event*) payload;
 
     /* Check compiler packing. */
     pj_assert(sizeof(pjmedia_rtp_dtmf_event)==4);
@@ -902,7 +902,7 @@
                        pj_ssize_t bytes_read)
 
 {
-    pjmedia_stream *stream = data;
+    pjmedia_stream *stream = (pjmedia_stream*) data;
     pjmedia_channel *channel = stream->dec;
     const pjmedia_rtp_hdr *hdr;
     const void *payload;
@@ -918,7 +918,7 @@
     }
 
     /* Ignore keep-alive packets */
-    if (bytes_read < sizeof(pjmedia_rtp_hdr))
+    if (bytes_read < (pj_ssize_t) sizeof(pjmedia_rtp_hdr))
 	return;
 
     /* Update RTP and RTCP session. */
@@ -1052,7 +1052,7 @@
                         const void *pkt, 
                         pj_ssize_t bytes_read)
 {
-    pjmedia_stream *stream = data;
+    pjmedia_stream *stream = (pjmedia_stream*) data;
 
     /* Check for errors */
     if (bytes_read < 0) {
@@ -1080,7 +1080,7 @@
     
     /* Allocate memory for channel descriptor */
 
-    channel = pj_pool_zalloc(pool, sizeof(pjmedia_channel));
+    channel = PJ_POOL_ZALLOC_T(pool, pjmedia_channel);
     PJ_ASSERT_RETURN(channel != NULL, PJ_ENOMEM);
 
     /* Init channel info. */
@@ -1146,11 +1146,11 @@
 
     /* Allocate the media stream: */
 
-    stream = pj_pool_zalloc(pool, sizeof(pjmedia_stream));
+    stream = PJ_POOL_ZALLOC_T(pool, pjmedia_stream);
     PJ_ASSERT_RETURN(stream != NULL, PJ_ENOMEM);
 
     /* Init stream/port name */
-    name.ptr = pj_pool_alloc(pool, M);
+    name.ptr = (char*) pj_pool_alloc(pool, M);
     name.slen = pj_ansi_snprintf(name.ptr, M, "strm%p", stream);
 
 
@@ -1262,7 +1262,8 @@
 
 	/* Allocate buffer */
 	stream->enc_buf_size = stream->port.info.clock_rate * ptime / 1000;
-	stream->enc_buf = pj_pool_alloc(pool, stream->enc_buf_size * 2);
+	stream->enc_buf = (pj_int16_t*)
+			  pj_pool_alloc(pool, stream->enc_buf_size * 2);
 
     } else {
 	stream->enc_samples_per_frame = stream->port.info.samples_per_frame;
@@ -1535,7 +1536,7 @@
     pj_mutex_lock(stream->jb_mutex);
     
     if (stream->tx_dtmf_count+digit_char->slen >=
-	PJ_ARRAY_SIZE(stream->tx_dtmf_buf))
+	(long)PJ_ARRAY_SIZE(stream->tx_dtmf_buf))
     {
 	status = PJ_ETOOMANY;
     } else {
diff --git a/pjmedia/src/pjmedia/tonegen.c b/pjmedia/src/pjmedia/tonegen.c
index 195fb6c..945a47c 100644
--- a/pjmedia/src/pjmedia/tonegen.c
+++ b/pjmedia/src/pjmedia/tonegen.c
@@ -305,7 +305,7 @@
     PJ_ASSERT_RETURN(channel_count==1 || channel_count==2, PJ_EINVAL);
 
     /* Create and initialize port */
-    tonegen = pj_pool_zalloc(pool, sizeof(struct tonegen));
+    tonegen = PJ_POOL_ZALLOC_T(pool, struct tonegen);
     if (name == NULL || name->slen == 0) name = &STR_TONE_GEN;
     status = pjmedia_port_info_init(&tonegen->base.info, name, 
 				    SIGNATURE, clock_rate, channel_count, 
@@ -421,7 +421,7 @@
 	}
     }
     
-    dst = frame->buf;
+    dst = (short*) frame->buf;
     end = dst + port->info.samples_per_frame;
 
     while (dst < end) {
diff --git a/pjmedia/src/pjmedia/transport_ice.c b/pjmedia/src/pjmedia/transport_ice.c
index 7fce08a..019ba04 100644
--- a/pjmedia/src/pjmedia/transport_ice.c
+++ b/pjmedia/src/pjmedia/transport_ice.c
@@ -249,7 +249,7 @@
     pjmedia_sdp_attr *attr;
     unsigned i, cand_cnt;
 
-    buffer = pj_pool_alloc(pool, MAXLEN);
+    buffer = (char*) pj_pool_alloc(pool, MAXLEN);
 
     /* Create ice-ufrag attribute */
     attr = pjmedia_sdp_attr_create(pool, "ice-ufrag", 
diff --git a/pjmedia/src/pjmedia/transport_udp.c b/pjmedia/src/pjmedia/transport_udp.c
index a8576a7..f1ef7f6 100644
--- a/pjmedia/src/pjmedia/transport_udp.c
+++ b/pjmedia/src/pjmedia/transport_udp.c
@@ -234,7 +234,7 @@
     if (!pool)
 	return PJ_ENOMEM;
 
-    tp = pj_pool_zalloc(pool, sizeof(struct transport_udp));
+    tp = PJ_POOL_ZALLOC_T(pool, struct transport_udp);
     tp->pool = pool;
     tp->options = options;
     pj_ansi_strcpy(tp->base.name, name);
@@ -378,7 +378,7 @@
 
     PJ_UNUSED_ARG(op_key);
 
-    udp = pj_ioqueue_get_user_data(key);
+    udp = (struct transport_udp*) pj_ioqueue_get_user_data(key);
 
     do {
 	void (*cb)(void*,const void*,pj_ssize_t);
@@ -479,7 +479,7 @@
 
     PJ_UNUSED_ARG(op_key);
 
-    udp = pj_ioqueue_get_user_data(key);
+    udp = (struct transport_udp*) pj_ioqueue_get_user_data(key);
 
     do {
 	void (*cb)(void*,const void*,pj_ssize_t);
@@ -567,7 +567,7 @@
     pj_memcpy(&udp->rem_rtp_addr, rem_addr, sizeof(pj_sockaddr_in));
 
     /* Copy remote RTP address, if one is specified. */
-    rtcp_addr = rem_rtcp;
+    rtcp_addr = (const pj_sockaddr_in*) rem_rtcp;
     if (rtcp_addr && rtcp_addr->sin_addr.s_addr != 0) {
 	pj_memcpy(&udp->rem_rtcp_addr, rem_rtcp, sizeof(pj_sockaddr_in));
 
diff --git a/pjmedia/src/pjmedia/wav_player.c b/pjmedia/src/pjmedia/wav_player.c
index 08fc2d1..471a76b 100644
--- a/pjmedia/src/pjmedia/wav_player.c
+++ b/pjmedia/src/pjmedia/wav_player.c
@@ -79,7 +79,7 @@
     const pj_str_t name = pj_str("file");
     struct file_port *port;
 
-    port = pj_pool_zalloc(pool, sizeof(struct file_port));
+    port = PJ_POOL_ZALLOC_T(pool, struct file_port);
     if (!port)
 	return NULL;
 
@@ -349,7 +349,7 @@
 
 
     /* Create buffer. */
-    fport->buf = pj_pool_alloc(pool, fport->bufsize);
+    fport->buf = (char*) pj_pool_alloc(pool, fport->bufsize);
     if (!fport->buf) {
 	pj_file_close(fport->fd);
 	return PJ_ENOMEM;
diff --git a/pjmedia/src/pjmedia/wav_playlist.c b/pjmedia/src/pjmedia/wav_playlist.c
index 24af112..dbd8dbe 100644
--- a/pjmedia/src/pjmedia/wav_playlist.c
+++ b/pjmedia/src/pjmedia/wav_playlist.c
@@ -84,7 +84,7 @@
 {
     struct playlist_port *port;
 
-    port = pj_pool_zalloc(pool, sizeof(struct playlist_port));
+    port = PJ_POOL_ZALLOC_T(pool, struct playlist_port);
     if (!port)
 	return NULL;
 
@@ -275,25 +275,29 @@
     fport->max_file = file_count;
 
     /* Create file descriptor list */
-    fport->fd_list = pj_pool_zalloc(pool, sizeof(pj_oshandle_t)*file_count);
+    fport->fd_list = (pj_oshandle_t*)
+		     pj_pool_zalloc(pool, sizeof(pj_oshandle_t)*file_count);
     if (!fport->fd_list) {
 	return PJ_ENOMEM;
     }
 
     /* Create file size list */
-    fport->fsize_list = pj_pool_alloc(pool, sizeof(pj_off_t)*file_count);
+    fport->fsize_list = (pj_off_t*)
+			pj_pool_alloc(pool, sizeof(pj_off_t)*file_count);
     if (!fport->fsize_list) {
 	return PJ_ENOMEM;
     }
 
     /* Create start of WAVE data list */
-    fport->start_data_list = pj_pool_alloc(pool, sizeof(unsigned)*file_count);
+    fport->start_data_list = (unsigned*)
+			     pj_pool_alloc(pool, sizeof(unsigned)*file_count);
     if (!fport->start_data_list) {
 	return PJ_ENOMEM;
     }
 
     /* Create file position list */
-    fport->fpos_list = pj_pool_alloc(pool, sizeof(pj_off_t)*file_count);
+    fport->fpos_list = (pj_off_t*)
+		       pj_pool_alloc(pool, sizeof(pj_off_t)*file_count);
     if (!fport->fpos_list) {
 	return PJ_ENOMEM;
     }
@@ -305,7 +309,7 @@
 
 
     /* Create buffer. */
-    fport->buf = pj_pool_alloc(pool, fport->bufsize);
+    fport->buf = (char*) pj_pool_alloc(pool, fport->bufsize);
     if (!fport->buf) {
 	return PJ_ENOMEM;
     }
diff --git a/pjmedia/src/pjmedia/wav_writer.c b/pjmedia/src/pjmedia/wav_writer.c
index 2933f6b..89eb347 100644
--- a/pjmedia/src/pjmedia/wav_writer.c
+++ b/pjmedia/src/pjmedia/wav_writer.c
@@ -83,7 +83,7 @@
     PJ_ASSERT_RETURN(bits_per_sample == 16, PJ_EINVAL);
 
     /* Create file port instance. */
-    fport = pj_pool_zalloc(pool, sizeof(struct file_port));
+    fport = PJ_POOL_ZALLOC_T(pool, struct file_port);
     PJ_ASSERT_RETURN(fport != NULL, PJ_ENOMEM);
 
     /* Initialize port info. */
@@ -149,7 +149,7 @@
 
 
     /* Allocate buffer and set initial write position */
-    fport->buf = pj_pool_alloc(pool, fport->bufsize);
+    fport->buf = (char*) pj_pool_alloc(pool, fport->bufsize);
     if (fport->buf == NULL) {
 	pj_file_close(fport->fd);
 	return PJ_ENOMEM;
diff --git a/pjnath/src/pjnath/stun_msg.c b/pjnath/src/pjnath/stun_msg.c
index 357a74b..0c17bc5 100644
--- a/pjnath/src/pjnath/stun_msg.c
+++ b/pjnath/src/pjnath/stun_msg.c
@@ -17,6 +17,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
  */
 #include <pjnath/stun_msg.h>
+#include <pjnath/stun_auth.h>
 #include <pjnath/errno.h>
 #include <pjlib-util/crc32.h>
 #include <pjlib-util/hmac_sha1.h>
diff --git a/pjnath/src/pjstun-client/client_main.c b/pjnath/src/pjstun-client/client_main.c
index cb62788..1083410 100644
--- a/pjnath/src/pjstun-client/client_main.c
+++ b/pjnath/src/pjstun-client/client_main.c
@@ -27,7 +27,7 @@
 #define LIFETIME	600		    /* -1 to disable */
 #define REQ_TRANSPORT	-1		    /* 0: udp, 1: tcp, -1: disable */
 #define REQ_PORT_PROPS	-1		    /* -1 to disable */
-#define REQ_IP		NULL		    /* IP address string */
+#define REQ_IP		0		    /* IP address string */
 
 //#define OPTIONS		PJ_STUN_NO_AUTHENTICATE
 #define OPTIONS		0
@@ -354,7 +354,7 @@
 				      PJ_STUN_ATTR_REQ_PORT_PROPS, REQ_PORT_PROPS);
 	}
 
-	if (REQ_IP != NULL) {
+	if (REQ_IP) {
 	    pj_sockaddr_in addr;
 	    pj_str_t tmp;
 
diff --git a/pjnath/src/pjstun-srv-test/server.c b/pjnath/src/pjstun-srv-test/server.c
index eb1e12b..b1adcf1 100644
--- a/pjnath/src/pjstun-srv-test/server.c
+++ b/pjnath/src/pjstun-srv-test/server.c
@@ -87,7 +87,8 @@
 			srv->si.timer_heap);
 
     srv->si.thread_cnt = thread_cnt;
-    srv->threads = pj_pool_calloc(pool, thread_cnt, sizeof(pj_thread_t*));
+    srv->threads = (pj_thread_t**)
+		   pj_pool_calloc(pool, thread_cnt, sizeof(pj_thread_t*));
     for (i=0; i<thread_cnt; ++i) {
 	status = pj_thread_create(pool, "worker%p", &worker_thread,
 				  srv, 0, 0, &srv->threads[i]);
diff --git a/pjnath/src/pjstun-srv-test/turn_usage.c b/pjnath/src/pjstun-srv-test/turn_usage.c
index d5677f9..145d802 100644
--- a/pjnath/src/pjstun-srv-test/turn_usage.c
+++ b/pjnath/src/pjstun-srv-test/turn_usage.c
@@ -285,7 +285,7 @@
     
 
     if (client) {
-	status = pj_stun_msg_check(pkt, pkt_size, flags);
+	status = pj_stun_msg_check((const pj_uint8_t*)pkt, pkt_size, flags);
 
 	if (status == PJ_SUCCESS) {
 	    /* Received STUN message */
@@ -1354,7 +1354,7 @@
 
     PJ_UNUSED_ARG(op_key);
 
-    client = pj_ioqueue_get_user_data(key);
+    client = (struct turn_client*) pj_ioqueue_get_user_data(key);
     
     /* Lock client */
     pj_mutex_lock(client->mutex);
diff --git a/pjnath/src/pjstun-srv-test/usage.c b/pjnath/src/pjstun-srv-test/usage.c
index a8a5c27..58b22b4 100644
--- a/pjnath/src/pjstun-srv-test/usage.c
+++ b/pjnath/src/pjstun-srv-test/usage.c
@@ -99,8 +99,8 @@
 	goto on_error;
 
     usage->worker_cnt = si->thread_cnt;
-    usage->worker = pj_pool_calloc(pool, si->thread_cnt, 
-				   sizeof(struct worker));
+    usage->worker = (struct worker*) pj_pool_calloc(pool, si->thread_cnt, 
+				   		    sizeof(struct worker));
     for (i=0; i<si->thread_cnt; ++i) {
 	pj_ioqueue_op_key_init(&usage->worker[i].read_key, 
 			       sizeof(usage->worker[i].read_key));
@@ -108,7 +108,8 @@
     }
 
     usage->send_count = usage->worker_cnt * 2;
-    usage->send_key = pj_pool_calloc(pool, usage->send_count, 
+    usage->send_key = (pj_ioqueue_op_key_t*)
+		      pj_pool_calloc(pool, usage->send_count, 
 				     sizeof(pj_ioqueue_op_key_t));
     for (i=0; i<usage->send_count; ++i) {
 	pj_ioqueue_op_key_init(&usage->send_key[i], 
@@ -240,7 +241,7 @@
                              pj_ssize_t bytes_read)
 {
     enum { MAX_LOOP = 10 };
-    pj_stun_usage *usage = pj_ioqueue_get_user_data(key);
+    pj_stun_usage *usage = (pj_stun_usage*) pj_ioqueue_get_user_data(key);
     struct worker *worker = (struct worker*) op_key;
     unsigned count;
     pj_status_t status;
diff --git a/pjsip/build/Makefile b/pjsip/build/Makefile
index e9fc2d3..a9b242c 100644
--- a/pjsip/build/Makefile
+++ b/pjsip/build/Makefile
@@ -89,7 +89,7 @@
 		    tsx_basic_test.o tsx_bench.o tsx_uac_test.o \
 		    tsx_uas_test.o txdata_test.o uri_test.o
 export TEST_CFLAGS += $(_CFLAGS)
-export TEST_LDFLAGS += $(PJ_LDFLAGS) $(PJ_LDLIBS)
+export TEST_LDFLAGS += $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS)
 export TEST_EXE := ../bin/pjsip-test-$(TARGET_NAME)$(HOST_EXE)
 
 	
diff --git a/pjsip/src/pjsip-simple/presence.c b/pjsip/src/pjsip-simple/presence.c
index 9f04c64..dc65637 100644
--- a/pjsip/src/pjsip-simple/presence.c
+++ b/pjsip/src/pjsip-simple/presence.c
@@ -57,12 +57,12 @@
 /*
  * Presence message body type.
  */
-typedef enum content_type
+typedef enum content_type_e
 {
     CONTENT_TYPE_NONE,
     CONTENT_TYPE_PIDF,
     CONTENT_TYPE_XPIDF,
-} content_type;
+} content_type_e;
 
 /*
  * This structure describe a presentity, for both subscriber and notifier.
@@ -71,7 +71,7 @@
 {
     pjsip_evsub		*sub;		/**< Event subscribtion record.	    */
     pjsip_dialog	*dlg;		/**< The dialog.		    */
-    content_type	 content_type;	/**< Content-Type.		    */
+    content_type_e	 content_type;	/**< Content-Type.		    */
     pjsip_pres_status	 status;	/**< Presence status.		    */
     pjsip_pres_status	 tmp_status;	/**< Temp, before NOTIFY is answred.*/
     pjsip_evsub_user	 user_cb;	/**< The user callback.		    */
@@ -226,7 +226,7 @@
     pjsip_event_hdr *event;
     pjsip_expires_hdr *expires_hdr;
     unsigned expires;
-    content_type content_type = CONTENT_TYPE_NONE;
+    content_type_e content_type = CONTENT_TYPE_NONE;
     pjsip_evsub *sub;
     pjsip_pres *pres;
     pj_status_t status;
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c
index e08e10d..44d073b 100644
--- a/pjsip/src/pjsip-ua/sip_inv.c
+++ b/pjsip/src/pjsip-ua/sip_inv.c
@@ -229,7 +229,7 @@
     if (dlg == NULL)
 	return PJ_FALSE;
 
-    inv = dlg->mod_data[mod_inv.mod.id];
+    inv = (pjsip_inv_session*) dlg->mod_data[mod_inv.mod.id];
 
     /* Report to dialog that we handle INVITE, CANCEL, BYE, ACK. 
      * If we need to send response, it will be sent in the state
@@ -411,7 +411,7 @@
  */
 PJ_DEF(pjsip_inv_session*) pjsip_dlg_get_inv_session(pjsip_dialog *dlg)
 {
-    return dlg->mod_data[mod_inv.mod.id];
+    return (pjsip_inv_session*) dlg->mod_data[mod_inv.mod.id];
 }
 
 
@@ -452,7 +452,7 @@
 	options |= PJSIP_INV_SUPPORT_TIMER;
 
     /* Create the session */
-    inv = pj_pool_zalloc(dlg->pool, sizeof(pjsip_inv_session));
+    inv = PJ_POOL_ZALLOC_T(dlg->pool, pjsip_inv_session);
     pj_assert(inv != NULL);
 
     inv->pool = dlg->pool;
@@ -577,8 +577,8 @@
 	}
 
 	/* Parse and validate SDP */
-	status = pjmedia_sdp_parse(rdata->tp_info.pool, body->data, body->len,
-				   &sdp);
+	status = pjmedia_sdp_parse(rdata->tp_info.pool, 
+				   (char*)body->data, body->len, &sdp);
 	if (status == PJ_SUCCESS)
 	    status = pjmedia_sdp_validate(sdp);
 
@@ -650,7 +650,7 @@
      * We just assume that peer supports standard INVITE, ACK, CANCEL, and BYE
      * implicitly by sending this INVITE.
      */
-    allow = pjsip_msg_find_hdr(msg, PJSIP_H_ALLOW, NULL);
+    allow = (pjsip_allow_hdr*) pjsip_msg_find_hdr(msg, PJSIP_H_ALLOW, NULL);
     if (allow) {
 	unsigned i;
 	const pj_str_t STR_UPDATE = { "UPDATE", 6 };
@@ -668,7 +668,8 @@
     }
 
     /* Check Supported header */
-    sup_hdr = pjsip_msg_find_hdr(msg, PJSIP_H_SUPPORTED, NULL);
+    sup_hdr = (pjsip_supported_hdr*)
+	      pjsip_msg_find_hdr(msg, PJSIP_H_SUPPORTED, NULL);
     if (sup_hdr) {
 	unsigned i;
 	pj_str_t STR_100REL = { "100rel", 6};
@@ -683,7 +684,8 @@
     }
 
     /* Check Require header */
-    req_hdr = pjsip_msg_find_hdr(msg, PJSIP_H_REQUIRE, NULL);
+    req_hdr = (pjsip_require_hdr*)
+	      pjsip_msg_find_hdr(msg, PJSIP_H_REQUIRE, NULL);
     if (req_hdr) {
 	unsigned i;
 	const pj_str_t STR_100REL = { "100rel", 6};
@@ -742,7 +744,8 @@
 					       NULL);
 		pj_assert(h);
 		if (h) {
-		    sup_hdr = pjsip_hdr_clone(rdata->tp_info.pool, h);
+		    sup_hdr = (pjsip_supported_hdr*)
+			      pjsip_hdr_clone(rdata->tp_info.pool, h);
 		    pj_list_push_back(&res_hdr_list, sup_hdr);
 		}
 	    }
@@ -782,7 +785,8 @@
 					   NULL);
 	    pj_assert(h);
 	    if (h) {
-		sup_hdr = pjsip_hdr_clone(rdata->tp_info.pool, h);
+		sup_hdr = (pjsip_supported_hdr*)
+			  pjsip_hdr_clone(rdata->tp_info.pool, h);
 		pj_list_push_back(&res_hdr_list, sup_hdr);
 	    }
 
@@ -814,7 +818,7 @@
 	while (h != &res_hdr_list) {
 	    pjsip_hdr *cloned;
 
-	    cloned = pjsip_hdr_clone(tdata->pool, h);
+	    cloned = (pjsip_hdr*) pjsip_hdr_clone(tdata->pool, h);
 	    PJ_ASSERT_RETURN(cloned, PJ_ENOMEM);
 
 	    pjsip_msg_add_hdr(tdata->msg, cloned);
@@ -874,7 +878,7 @@
 	options |= PJSIP_INV_SUPPORT_TIMER;
 
     /* Create the session */
-    inv = pj_pool_zalloc(dlg->pool, sizeof(pjsip_inv_session));
+    inv = PJ_POOL_ZALLOC_T(dlg->pool, pjsip_inv_session);
     pj_assert(inv != NULL);
 
     inv->pool = dlg->pool;
@@ -893,7 +897,7 @@
 	pjsip_msg_body *body = msg->body;
 
 	/* Parse and validate SDP */
-	status = pjmedia_sdp_parse(inv->pool, body->data, body->len,
+	status = pjmedia_sdp_parse(inv->pool, (char*)body->data, body->len,
 				   &rem_sdp);
 	if (status == PJ_SUCCESS)
 	    status = pjmedia_sdp_validate(rem_sdp);
@@ -935,8 +939,7 @@
     inv->invite_tsx = pjsip_rdata_get_tsx(rdata);
 
     /* Attach our data to the transaction. */
-    tsx_inv_data = pj_pool_zalloc(inv->invite_tsx->pool, 
-				  sizeof(struct tsx_inv_data));
+    tsx_inv_data = PJ_POOL_ZALLOC_T(inv->invite_tsx->pool, struct tsx_inv_data);
     tsx_inv_data->inv = inv;
     inv->invite_tsx->mod_data[mod_inv.mod.id] = tsx_inv_data;
 
@@ -997,12 +1000,12 @@
 static void *clone_sdp(pj_pool_t *pool, const void *data, unsigned len)
 {
     PJ_UNUSED_ARG(len);
-    return pjmedia_sdp_session_clone(pool, data);
+    return pjmedia_sdp_session_clone(pool, (const pjmedia_sdp_session*)data);
 }
 
 static int print_sdp(pjsip_msg_body *body, char *buf, pj_size_t len)
 {
-    return pjmedia_sdp_print(body->data, buf, len);
+    return pjmedia_sdp_print((const pjmedia_sdp_session*)body->data, buf, len);
 }
 
 
@@ -1014,7 +1017,7 @@
     const pj_str_t STR_SDP = { "sdp", 3 };
     pjsip_msg_body *body;
 
-    body = pj_pool_zalloc(pool, sizeof(pjsip_msg_body));
+    body = PJ_POOL_ZALLOC_T(pool, pjsip_msg_body);
     PJ_ASSERT_RETURN(body != NULL, PJ_ENOMEM);
 
     body->content_type.type = STR_APPLICATION;
@@ -1082,7 +1085,7 @@
 	hdr = inv->dlg->inv_hdr.next;
 
 	while (hdr != &inv->dlg->inv_hdr) {
-	    pjsip_msg_add_hdr(tdata->msg,
+	    pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*)
 			      pjsip_hdr_shallow_clone(tdata->pool, hdr));
 	    hdr = hdr->next;
 	}
@@ -1117,14 +1120,14 @@
     /* Add Allow header. */
     hdr = pjsip_endpt_get_capability(inv->dlg->endpt, PJSIP_H_ALLOW, NULL);
     if (hdr) {
-	pjsip_msg_add_hdr(tdata->msg,
+	pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*)
 			  pjsip_hdr_shallow_clone(tdata->pool, hdr));
     }
 
     /* Add Supported header */
     hdr = pjsip_endpt_get_capability(inv->dlg->endpt, PJSIP_H_SUPPORTED, NULL);
     if (hdr) {
-	pjsip_msg_add_hdr(tdata->msg,
+	pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*)
 			  pjsip_hdr_shallow_clone(tdata->pool, hdr));
     }
 
@@ -1177,9 +1180,9 @@
     pjmedia_sdp_session *sdp;
 
     /* Get/attach invite session's transaction data */
-    tsx_inv_data = tsx->mod_data[mod_inv.mod.id];
+    tsx_inv_data = (struct tsx_inv_data*) tsx->mod_data[mod_inv.mod.id];
     if (tsx_inv_data == NULL) {
-	tsx_inv_data = pj_pool_zalloc(tsx->pool, sizeof(struct tsx_inv_data));
+	tsx_inv_data = PJ_POOL_ZALLOC_T(tsx->pool, struct tsx_inv_data);
 	tsx_inv_data->inv = inv;
 	tsx->mod_data[mod_inv.mod.id] = tsx_inv_data;
     }
@@ -1207,7 +1210,8 @@
 
     /* Parse the SDP body. */
 
-    status = pjmedia_sdp_parse(rdata->tp_info.pool, msg->body->data,
+    status = pjmedia_sdp_parse(rdata->tp_info.pool, 
+			       (char*)msg->body->data,
 			       msg->body->len, &sdp);
     if (status != PJ_SUCCESS) {
 	char errmsg[PJ_ERR_MSG_SIZE];
@@ -1587,7 +1591,8 @@
 	const pj_str_t STR_CONTACT = { "Contact", 7 };
 
 	pj_strdup_with_null(inv->dlg->pool, &tmp, new_contact);
-	contact_hdr = pjsip_parse_hdr(inv->dlg->pool, &STR_CONTACT, 
+	contact_hdr = (pjsip_contact_hdr*)
+		      pjsip_parse_hdr(inv->dlg->pool, &STR_CONTACT, 
 				      tmp.ptr, tmp.slen, NULL);
 	if (!contact_hdr) {
 	    status = PJSIP_EINVALIDURI;
@@ -1684,7 +1689,7 @@
 
 	pjsip_dlg_inc_lock(inv->dlg);
 
-	tsx_inv_data = pj_pool_zalloc(inv->pool, sizeof(struct tsx_inv_data));
+	tsx_inv_data = PJ_POOL_ZALLOC_T(inv->pool, struct tsx_inv_data);
 	tsx_inv_data->inv = inv;
 
 	pjsip_dlg_dec_lock(inv->dlg);
@@ -1700,7 +1705,7 @@
 	/* Can only do this to send response to original INVITE
 	 * request.
 	 */
-	PJ_ASSERT_RETURN((cseq=pjsip_msg_find_hdr(tdata->msg, PJSIP_H_CSEQ, NULL))!=NULL
+	PJ_ASSERT_RETURN((cseq=(pjsip_cseq_hdr*)pjsip_msg_find_hdr(tdata->msg, PJSIP_H_CSEQ, NULL))!=NULL
 			  && (cseq->cseq == inv->invite_tsx->cseq),
 			 PJ_EINVALIDOP);
 
@@ -2415,7 +2420,7 @@
 		accept = pjsip_endpt_get_capability(dlg->endpt, PJSIP_H_ACCEPT,
 						    NULL);
 		if (accept) {
-		    pjsip_msg_add_hdr(tdata->msg,
+		    pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*)
 				      pjsip_hdr_clone(tdata->pool, accept));
 		}
 
diff --git a/pjsip/src/pjsip-ua/sip_reg.c b/pjsip/src/pjsip-ua/sip_reg.c
index e77273a..dc15fef 100644
--- a/pjsip/src/pjsip-ua/sip_reg.c
+++ b/pjsip/src/pjsip-ua/sip_reg.c
@@ -103,13 +103,13 @@
     pool = pjsip_endpt_create_pool(endpt, "regc%p", 1024, 1024);
     PJ_ASSERT_RETURN(pool != NULL, PJ_ENOMEM);
 
-    regc = pj_pool_zalloc(pool, sizeof(struct pjsip_regc));
+    regc = PJ_POOL_ZALLOC_T(pool, pjsip_regc);
 
     regc->pool = pool;
     regc->endpt = endpt;
     regc->token = token;
     regc->cb = cb;
-    regc->contact_buf = pj_pool_alloc(pool, PJSIP_REGC_CONTACT_BUF_SIZE);
+    regc->contact_buf = (char*)pj_pool_alloc(pool, PJSIP_REGC_CONTACT_BUF_SIZE);
     regc->expires = PJSIP_REGC_EXPIRATION_NOT_SPECIFIED;
 
     status = pjsip_auth_clt_init(&regc->auth_sess, endpt, regc->pool, 0);
@@ -386,13 +386,15 @@
 	pjsip_hdr *route_pos;
 	const pjsip_route_hdr *route;
 
-	route_pos = pjsip_msg_find_hdr(tdata->msg, PJSIP_H_VIA, NULL);
+	route_pos = (pjsip_hdr*)
+		    pjsip_msg_find_hdr(tdata->msg, PJSIP_H_VIA, NULL);
 	if (!route_pos)
 	    route_pos = &tdata->msg->hdr;
 
 	route = regc->route_set.next;
 	while (route != &regc->route_set) {
-	    pjsip_hdr *new_hdr = pjsip_hdr_shallow_clone(tdata->pool, route);
+	    pjsip_hdr *new_hdr = (pjsip_hdr*)
+				 pjsip_hdr_shallow_clone(tdata->pool, route);
 	    pj_list_insert_after(route_pos, new_hdr);
 	    route_pos = new_hdr;
 	    route = route->next;
@@ -405,7 +407,8 @@
 
 	hdr = regc->hdr_list.next;
 	while (hdr != &regc->hdr_list) {
-	    pjsip_hdr *new_hdr = pjsip_hdr_shallow_clone(tdata->pool, hdr);
+	    pjsip_hdr *new_hdr = (pjsip_hdr*)
+				 pjsip_hdr_shallow_clone(tdata->pool, hdr);
 	    pjsip_msg_add_hdr(tdata->msg, new_hdr);
 	    hdr = hdr->next;
 	}
@@ -432,10 +435,12 @@
 
     /* Add Contact header. */
     msg = tdata->msg;
-    pjsip_msg_add_hdr(msg, pjsip_hdr_shallow_clone(tdata->pool, 
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)
+			   pjsip_hdr_shallow_clone(tdata->pool, 
 						   regc->contact_hdr));
     if (regc->expires_hdr)
-	pjsip_msg_add_hdr(msg, pjsip_hdr_shallow_clone(tdata->pool,
+	pjsip_msg_add_hdr(msg, (pjsip_hdr*)
+			       pjsip_hdr_shallow_clone(tdata->pool,
 						       regc->expires_hdr));
 
     if (regc->timer.id != 0) {
@@ -470,7 +475,8 @@
 	return status;
 
     msg = tdata->msg;
-    pjsip_msg_add_hdr(msg, pjsip_hdr_shallow_clone(tdata->pool, 
+    pjsip_msg_add_hdr(msg, (pjsip_hdr*)
+			   pjsip_hdr_shallow_clone(tdata->pool, 
 						   regc->contact_hdr));
     pjsip_msg_add_hdr( msg, (pjsip_hdr*)regc->unreg_expires_hdr);
 
@@ -553,7 +559,7 @@
 static void regc_refresh_timer_cb( pj_timer_heap_t *timer_heap,
 				   struct pj_timer_entry *entry)
 {
-    pjsip_regc *regc = entry->user_data;
+    pjsip_regc *regc = (pjsip_regc*) entry->user_data;
     pjsip_tx_data *tdata;
     pj_status_t status;
     
@@ -587,7 +593,7 @@
 static void tsx_callback(void *token, pjsip_event *event)
 {
     pj_status_t status;
-    pjsip_regc *regc = token;
+    pjsip_regc *regc = (pjsip_regc*) token;
     pjsip_transaction *tsx = event->body.tsx_state.tsx;
     
     /* Decrement pending transaction counter. */
@@ -653,16 +659,19 @@
 
 	    rdata = event->body.tsx_state.src.rdata;
 	    msg = rdata->msg_info.msg;
-	    hdr = pjsip_msg_find_hdr( msg, PJSIP_H_CONTACT, NULL);
+	    hdr = (pjsip_contact_hdr*)
+		  pjsip_msg_find_hdr( msg, PJSIP_H_CONTACT, NULL);
 	    while (hdr) {
 		contact[contact_cnt++] = hdr;
 		hdr = hdr->next;
 		if (hdr == (void*)&msg->hdr)
 		    break;
-		hdr = pjsip_msg_find_hdr(msg, PJSIP_H_CONTACT, hdr);
+		hdr = (pjsip_contact_hdr*)
+		      pjsip_msg_find_hdr(msg, PJSIP_H_CONTACT, hdr);
 	    }
 
-	    expires = pjsip_msg_find_hdr(msg, PJSIP_H_EXPIRES, NULL);
+	    expires = (pjsip_expires_hdr*)
+		      pjsip_msg_find_hdr(msg, PJSIP_H_EXPIRES, NULL);
 
 	    if (expires)
 		expiration = expires->ivalue;
@@ -740,7 +749,8 @@
 
     /* Increment CSeq */
     cseq = ++regc->cseq_hdr->cseq;
-    cseq_hdr = pjsip_msg_find_hdr(tdata->msg, PJSIP_H_CSEQ, NULL);
+    cseq_hdr = (pjsip_cseq_hdr*)
+	       pjsip_msg_find_hdr(tdata->msg, PJSIP_H_CSEQ, NULL);
     cseq_hdr->cseq = cseq;
 
     /* Increment pending transaction first, since transaction callback
diff --git a/pjsip/src/pjsip-ua/sip_replaces.c b/pjsip/src/pjsip-ua/sip_replaces.c
index 545c426..284c282 100644
--- a/pjsip/src/pjsip-ua/sip_replaces.c
+++ b/pjsip/src/pjsip-ua/sip_replaces.c
@@ -52,7 +52,7 @@
 
 PJ_DEF(pjsip_replaces_hdr*) pjsip_replaces_hdr_create(pj_pool_t *pool)
 {
-    pjsip_replaces_hdr *hdr = pj_pool_zalloc(pool, sizeof(*hdr));
+    pjsip_replaces_hdr *hdr = PJ_POOL_ZALLOC_T(pool, pjsip_replaces_hdr);
     hdr->type = PJSIP_H_OTHER;
     hdr->name.ptr = "Replaces";
     hdr->name.slen = 8;
@@ -108,7 +108,7 @@
 replaces_hdr_shallow_clone( pj_pool_t *pool,
 			    const pjsip_replaces_hdr *rhs )
 {
-    pjsip_replaces_hdr *hdr = pj_pool_alloc(pool, sizeof(*hdr));
+    pjsip_replaces_hdr *hdr = PJ_POOL_ALLOC_T(pool, pjsip_replaces_hdr);
     pj_memcpy(hdr, rhs, sizeof(*hdr));
     pjsip_param_shallow_clone(pool, &hdr->other_param, &rhs->other_param);
     return hdr;
@@ -144,7 +144,7 @@
 	} else if (pj_stricmp(&pname, &early_only_tag)==0) {
 	    hdr->early_only = PJ_TRUE;
 	} else {
-	    pjsip_param *param = pj_pool_alloc(ctx->pool, sizeof(pjsip_param));
+	    pjsip_param *param = PJ_POOL_ALLOC_T(ctx->pool, pjsip_param);
 	    param->name = pname;
 	    param->value = pvalue;
 	    pj_list_push_back(&hdr->other_param, param);
@@ -318,7 +318,7 @@
 	    while (h != &res_hdr_list) {
 		pjsip_hdr *cloned;
 
-		cloned = pjsip_hdr_clone(tdata->pool, h);
+		cloned = (pjsip_hdr*) pjsip_hdr_clone(tdata->pool, h);
 		PJ_ASSERT_RETURN(cloned, PJ_ENOMEM);
 
 		pjsip_msg_add_hdr(tdata->msg, cloned);
diff --git a/pjsip/src/pjsip-ua/sip_xfer.c b/pjsip/src/pjsip-ua/sip_xfer.c
index f772f78..a4c4662 100644
--- a/pjsip/src/pjsip-ua/sip_xfer.c
+++ b/pjsip/src/pjsip-ua/sip_xfer.c
@@ -179,7 +179,7 @@
 	goto on_return;
 
     /* Create xfer session */
-    xfer = pj_pool_zalloc(dlg->pool, sizeof(pjsip_xfer));
+    xfer = PJ_POOL_ZALLOC_T(dlg->pool, pjsip_xfer);
     xfer->dlg = dlg;
     xfer->sub = sub;
     if (user_cb)
@@ -248,7 +248,7 @@
 	goto on_return;
 
     /* Create server xfer subscription */
-    xfer = pj_pool_zalloc(dlg->pool, sizeof(pjsip_xfer));
+    xfer = PJ_POOL_ZALLOC_T(dlg->pool, pjsip_xfer);
     xfer->dlg = dlg;
     xfer->sub = sub;
     if (user_cb)
@@ -286,7 +286,7 @@
 
 
     /* Get the xfer object. */
-    xfer = pjsip_evsub_get_mod_data(sub, mod_xfer.id);
+    xfer = (pjsip_xfer*) pjsip_evsub_get_mod_data(sub, mod_xfer.id);
     PJ_ASSERT_RETURN(xfer != NULL, PJSIP_ENOREFERSESSION);
 
     /* refer_to_uri argument MAY be NULL for subsequent REFER requests,
@@ -373,7 +373,7 @@
     PJ_ASSERT_RETURN(sub, PJ_EINVAL);
 
     /* Get the xfer object. */
-    xfer = pjsip_evsub_get_mod_data(sub, mod_xfer.id);
+    xfer = (pjsip_xfer*) pjsip_evsub_get_mod_data(sub, mod_xfer.id);
     PJ_ASSERT_RETURN(xfer != NULL, PJSIP_ENOREFERSESSION);
 
 
@@ -398,7 +398,7 @@
     pj_strdup(xfer->dlg->pool, &xfer->last_st_text, xfer_st_text);
 
     /* Create sipfrag content. */
-    body = pj_pool_alloc(tdata->pool, 128);
+    body = (char*) pj_pool_alloc(tdata->pool, 128);
     bodylen = pj_ansi_snprintf(body, 128, "SIP/2.0 %u %.*s",
 			       xfer_st_code,
 			       (int)xfer_st_text->slen,
@@ -409,7 +409,7 @@
 
 
     /* Create SIP message body. */
-    msg_body = pj_pool_zalloc(tdata->pool, sizeof(pjsip_msg_body));
+    msg_body = PJ_POOL_ZALLOC_T(tdata->pool, pjsip_msg_body);
     msg_body->content_type.type = STR_MESSAGE;
     msg_body->content_type.subtype = STR_SIPFRAG;
     msg_body->content_type.param = STR_SIPFRAG_VERSION;
@@ -447,7 +447,7 @@
     PJ_ASSERT_RETURN(sub, PJ_EINVAL);
 
     /* Get the xfer object. */
-    xfer = pjsip_evsub_get_mod_data(sub, mod_xfer.id);
+    xfer = (pjsip_xfer*) pjsip_evsub_get_mod_data(sub, mod_xfer.id);
     PJ_ASSERT_RETURN(xfer != NULL, PJSIP_ENOREFERSESSION);
 
     pjsip_dlg_inc_lock(xfer->dlg);
@@ -480,7 +480,7 @@
 {
     pjsip_xfer *xfer;
 
-    xfer = pjsip_evsub_get_mod_data(sub, mod_xfer.id);
+    xfer = (pjsip_xfer*) pjsip_evsub_get_mod_data(sub, mod_xfer.id);
     PJ_ASSERT_ON_FAIL(xfer!=NULL, {return;});
 
     if (xfer->user_cb.on_evsub_state)
@@ -496,7 +496,7 @@
 {
     pjsip_xfer *xfer;
 
-    xfer = pjsip_evsub_get_mod_data(sub, mod_xfer.id);
+    xfer = (pjsip_xfer*) pjsip_evsub_get_mod_data(sub, mod_xfer.id);
     PJ_ASSERT_ON_FAIL(xfer!=NULL, {return;});
 
     if (xfer->user_cb.on_tsx_state)
@@ -515,7 +515,7 @@
 {
     pjsip_xfer *xfer;
 
-    xfer = pjsip_evsub_get_mod_data(sub, mod_xfer.id);
+    xfer = (pjsip_xfer*) pjsip_evsub_get_mod_data(sub, mod_xfer.id);
     PJ_ASSERT_ON_FAIL(xfer!=NULL, {return;});
 
     if (xfer->user_cb.on_rx_refresh) {
@@ -556,7 +556,7 @@
 {
     pjsip_xfer *xfer;
 
-    xfer = pjsip_evsub_get_mod_data(sub, mod_xfer.id);
+    xfer = (pjsip_xfer*) pjsip_evsub_get_mod_data(sub, mod_xfer.id);
     PJ_ASSERT_ON_FAIL(xfer!=NULL, {return;});
 
     if (xfer->user_cb.on_rx_notify)
@@ -571,7 +571,7 @@
 {
     pjsip_xfer *xfer;
 
-    xfer = pjsip_evsub_get_mod_data(sub, mod_xfer.id);
+    xfer = (pjsip_xfer*) pjsip_evsub_get_mod_data(sub, mod_xfer.id);
     PJ_ASSERT_ON_FAIL(xfer!=NULL, {return;});
 
     if (xfer->user_cb.on_client_refresh) {
@@ -594,7 +594,7 @@
 {
     pjsip_xfer *xfer;
 
-    xfer = pjsip_evsub_get_mod_data(sub, mod_xfer.id);
+    xfer = (pjsip_xfer*) pjsip_evsub_get_mod_data(sub, mod_xfer.id);
     PJ_ASSERT_ON_FAIL(xfer!=NULL, {return;});
 
     if (xfer->user_cb.on_server_timeout) {
diff --git a/pjsip/src/pjsip/sip_endpoint.c b/pjsip/src/pjsip/sip_endpoint.c
index add8ad3..8158209 100644
--- a/pjsip/src/pjsip/sip_endpoint.c
+++ b/pjsip/src/pjsip/sip_endpoint.c
@@ -167,7 +167,7 @@
 {
     pj_status_t status = PJ_SUCCESS;
     pjsip_module *m;
-    int i;
+    unsigned i;
 
     pj_rwmutex_lock_write(endpt->mod_mutex);
 
@@ -247,7 +247,8 @@
 			{status = PJ_ENOTFOUND;goto on_return;} );
 
     /* Make sure the module exists in the array. */
-    PJ_ASSERT_ON_FAIL(	mod->id>=0 && mod->id<PJ_ARRAY_SIZE(endpt->modules) &&
+    PJ_ASSERT_ON_FAIL(	mod->id>=0 && 
+			mod->id<(int)PJ_ARRAY_SIZE(endpt->modules) &&
 			endpt->modules[mod->id] == mod,
 			{status = PJ_ENOTFOUND; goto on_return;});
 
@@ -1079,7 +1080,7 @@
     PJ_UNUSED_ARG(endpt);
 
     len = pj_ansi_strlen(format);
-    if (len < sizeof(newformat)-30) {
+    if (len < (int)sizeof(newformat)-30) {
 	pj_str_t errstr;
 
 	pj_ansi_strcpy(newformat, format);
diff --git a/pjsip/src/pjsip/sip_msg.c b/pjsip/src/pjsip/sip_msg.c
index f94cd31..c00fde5 100644
--- a/pjsip/src/pjsip/sip_msg.c
+++ b/pjsip/src/pjsip/sip_msg.c
@@ -97,7 +97,7 @@
 
 static int init_status_phrase()
 {
-    int i;
+    unsigned i;
     pj_str_t default_reason_phrase = { "Default status message", 22};
 
     for (i=0; i<PJ_ARRAY_SIZE(status_phrase); ++i)
@@ -194,7 +194,7 @@
 PJ_DEF(void) pjsip_method_init_np(pjsip_method *m,
 				  pj_str_t *str)
 {
-    int i;
+    unsigned i;
     for (i=0; i<PJ_ARRAY_SIZE(method_names); ++i) {
 	if (pj_memcmp(str->ptr, method_names[i]->ptr, str->slen)==0 || 
 	    pj_stricmp(str, method_names[i])==0) 
@@ -515,7 +515,8 @@
 	init_status_phrase();
     }
 
-    return (code>=100 && code<(sizeof(status_phrase)/sizeof(status_phrase[0]))) ? 
+    return (code>=100 && 
+	    code<(int)(sizeof(status_phrase)/sizeof(status_phrase[0]))) ? 
 	&status_phrase[code] : &status_phrase[0];
 }
 
diff --git a/pjsip/src/pjsip/sip_transport.c b/pjsip/src/pjsip/sip_transport.c
index afe0f1e..91ac434 100644
--- a/pjsip/src/pjsip/sip_transport.c
+++ b/pjsip/src/pjsip/sip_transport.c
@@ -97,7 +97,7 @@
 /*
  * Transport names.
  */
-struct
+struct transport_names_t
 {
     pjsip_transport_type_e type;
     pj_uint16_t		   port;
@@ -216,7 +216,7 @@
 		     PJSIP_TRANSPORT_UDP, 0);
 
     /* Check that argument is valid. */
-    PJ_ASSERT_RETURN(type < PJ_ARRAY_SIZE(transport_names), 0);
+    PJ_ASSERT_RETURN((unsigned)type < PJ_ARRAY_SIZE(transport_names), 0);
 
     /* Return transport flag. */
     return transport_names[type].flag;
@@ -235,7 +235,7 @@
 		     PJSIP_TRANSPORT_UDP, 0);
 
     /* Check that argument is valid. */
-    PJ_ASSERT_RETURN(type < PJ_ARRAY_SIZE(transport_names), 5060);
+    PJ_ASSERT_RETURN((unsigned)type < PJ_ARRAY_SIZE(transport_names), 5060);
 
     /* Return the port. */
     return transport_names[type].port;
@@ -253,7 +253,7 @@
 		     PJSIP_TRANSPORT_UDP, "Unknown");
 
     /* Check that argument is valid. */
-    PJ_ASSERT_RETURN(type < PJ_ARRAY_SIZE(transport_names), "Unknown");
+    PJ_ASSERT_RETURN((unsigned)type<PJ_ARRAY_SIZE(transport_names), "Unknown");
 
     /* Return the port. */
     return transport_names[type].name.ptr;
@@ -414,7 +414,7 @@
 			       cseq->cseq, obj_name);
     }
 
-    if (len < 1 || len >= sizeof(info_buf)) {
+    if (len < 1 || len >= (int)sizeof(info_buf)) {
 	return (char*)obj_name;
     }
 
diff --git a/pjsip/src/pjsip/sip_transport_tls_ossl.c b/pjsip/src/pjsip/sip_transport_tls_ossl.c
index e7a91c5..89537c1 100644
--- a/pjsip/src/pjsip/sip_transport_tls_ossl.c
+++ b/pjsip/src/pjsip/sip_transport_tls_ossl.c
@@ -259,7 +259,7 @@
 				   const pj_sockaddr_in *addr )
 {
     enum { M = 48 };
-    host_port->host.ptr = pj_pool_alloc(pool, M);
+    host_port->host.ptr = (char*)pj_pool_alloc(pool, M);
     host_port->host.slen = pj_ansi_snprintf( host_port->host.ptr, M, "%s", 
 					    pj_inet_ntoa(addr->sin_addr));
     host_port->port = pj_ntohs(addr->sin_port);
@@ -269,7 +269,7 @@
 /* SSL password callback. */
 static int password_cb(char *buf, int num, int rwflag, void *user_data)
 {
-    struct tls_listener *lis = user_data;
+    struct tls_listener *lis = (struct tls_listener*) user_data;
 
     PJ_UNUSED_ARG(rwflag);
 
@@ -904,7 +904,7 @@
     PJ_ASSERT_RETURN(pool, PJ_ENOMEM);
 
 
-    listener = pj_pool_zalloc(pool, sizeof(struct tls_listener));
+    listener = PJ_POOL_ZALLOC_T(pool, struct tls_listener);
     listener->factory.pool = pool;
     listener->factory.type = PJSIP_TRANSPORT_TLS;
     listener->factory.type_name = "tls";
@@ -1036,8 +1036,7 @@
 	    goto on_error;
 	}
 
-	listener->accept_op[i] = pj_pool_zalloc(pool, 
-						sizeof(struct pending_accept));
+	listener->accept_op[i] = PJ_POOL_ZALLOC_T(pool, struct pending_accept);
 	pj_ioqueue_op_key_init(&listener->accept_op[i]->op_key, 
 				sizeof(listener->accept_op[i]->op_key));
 	listener->accept_op[i]->pool = pool;
@@ -1191,7 +1190,7 @@
     /*
      * Create and initialize basic transport structure.
      */
-    tls = pj_pool_zalloc(pool, sizeof(*tls));
+    tls = PJ_POOL_ZALLOC_T(pool, struct tls_transport);
     tls->sock = sock;
     tls->is_server = is_server;
     tls->listener = listener;
@@ -1217,7 +1216,7 @@
     tls->base.type_name = "tls";
     tls->base.flag = pjsip_transport_get_flag_from_type(PJSIP_TRANSPORT_TLS);
 
-    tls->base.info = pj_pool_alloc(pool, 64);
+    tls->base.info = (char*) pj_pool_alloc(pool, 64);
     pj_ansi_snprintf(tls->base.info, 64, "TLS to %s:%d",
 		     pj_inet_ntoa(remote->sin_addr), 
 		     (int)pj_ntohs(remote->sin_port));
@@ -1635,7 +1634,7 @@
     struct pending_accept *accept_op;
     int err_cnt = 0;
 
-    listener = pj_ioqueue_get_user_data(key);
+    listener = (struct tls_listener*) pj_ioqueue_get_user_data(key);
     accept_op = (struct pending_accept*) op_key;
 
     /*
@@ -1694,7 +1693,7 @@
 	    /* Create new accept_opt */
 	    pool = pjsip_endpt_create_pool(listener->endpt, "tlss%p", 
 					   POOL_TP_INIT, POOL_TP_INC);
-	    new_op = pj_pool_zalloc(pool, sizeof(struct pending_accept));
+	    new_op = PJ_POOL_ZALLOC_T(pool, struct pending_accept);
 	    new_op->pool = pool;
 	    new_op->listener = listener;
 	    new_op->index = accept_op->index;
@@ -1756,9 +1755,10 @@
                               pj_ioqueue_op_key_t *op_key, 
                               pj_ssize_t bytes_sent)
 {
-    struct tls_transport *tls = pj_ioqueue_get_user_data(key);
+    struct tls_transport *tls;
     pjsip_tx_data_op_key *tdata_op_key = (pjsip_tx_data_op_key*)op_key;
 
+    tls = (struct tls_transport*) pj_ioqueue_get_user_data(key);
     tdata_op_key->tdata = NULL;
 
     /* Check for error/closure */
@@ -1789,8 +1789,7 @@
 {
     struct delayed_tdata *delayed_tdata;
 
-    delayed_tdata = pj_pool_alloc(tdata->pool, 
-				  sizeof(*delayed_tdata));
+    delayed_tdata = PJ_POOL_ALLOC_T(tdata->pool, struct delayed_tdata);
     delayed_tdata->tdata_op_key = &tdata->op_key;
     pj_list_push_back(&tls->delayed_list, delayed_tdata);
 }
@@ -2097,7 +2096,7 @@
     pj_sockaddr_in addr;
     int addrlen;
 
-    tls = pj_ioqueue_get_user_data(key);
+    tls = (struct tls_transport*) pj_ioqueue_get_user_data(key);
 
     /* Check connect() status */
     if (status != PJ_SUCCESS) {
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c
index 01be07f..830b6ae 100644
--- a/pjsip/src/pjsua-lib/pjsua_acc.c
+++ b/pjsip/src/pjsua-lib/pjsua_acc.c
@@ -37,7 +37,7 @@
  */
 PJ_DEF(pj_bool_t) pjsua_acc_is_valid(pjsua_acc_id acc_id)
 {
-    return acc_id>=0 && acc_id<PJ_ARRAY_SIZE(pjsua_var.acc) &&
+    return acc_id>=0 && acc_id<(int)PJ_ARRAY_SIZE(pjsua_var.acc) &&
 	   pjsua_var.acc[acc_id].valid;
 }
 
@@ -185,7 +185,8 @@
 
 	pj_strdup_with_null(pjsua_var.pool, &tmp, 
 			    &pjsua_var.ua_cfg.outbound_proxy[i]);
-	r = pjsip_parse_hdr(pjsua_var.pool, &hname, tmp.ptr, tmp.slen, NULL);
+	r = (pjsip_route_hdr*)
+	    pjsip_parse_hdr(pjsua_var.pool, &hname, tmp.ptr, tmp.slen, NULL);
 	if (r == NULL) {
 	    pjsua_perror(THIS_FILE, "Invalid outbound proxy URI",
 			 PJSIP_EINVALIDURI);
@@ -200,7 +201,8 @@
 	pj_str_t tmp;
 
 	pj_strdup_with_null(pjsua_var.pool, &tmp, &acc_cfg->proxy[i]);
-	r = pjsip_parse_hdr(pjsua_var.pool, &hname, tmp.ptr, tmp.slen, NULL);
+	r = (pjsip_route_hdr*)
+	    pjsip_parse_hdr(pjsua_var.pool, &hname, tmp.ptr, tmp.slen, NULL);
 	if (r == NULL) {
 	    pjsua_perror(THIS_FILE, "Invalid URI in account route set",
 			 PJ_EINVAL);
@@ -322,7 +324,8 @@
     char uri[PJSIP_MAX_URL_SIZE];
 
     /* ID must be valid */
-    PJ_ASSERT_RETURN(tid>=0 && tid<PJ_ARRAY_SIZE(pjsua_var.tpdata), PJ_EINVAL);
+    PJ_ASSERT_RETURN(tid>=0 && tid<(int)PJ_ARRAY_SIZE(pjsua_var.tpdata), 
+		     PJ_EINVAL);
 
     /* Transport must be valid */
     PJ_ASSERT_RETURN(t->data.ptr != NULL, PJ_EINVAL);
@@ -433,7 +436,7 @@
 static void regc_cb(struct pjsip_regc_cbparam *param)
 {
 
-    pjsua_acc *acc = param->token;
+    pjsua_acc *acc = (pjsua_acc*) param->token;
 
     PJSUA_LOCK();
 
@@ -816,7 +819,7 @@
 	return pjsua_var.default_acc;
     }
 
-    sip_uri = pjsip_uri_get_uri(uri);
+    sip_uri = (pjsip_sip_uri*) pjsip_uri_get_uri(uri);
 
     /* Find matching domain AND port */
     for (i=0; i<pjsua_var.acc_cnt; ++i) {
@@ -954,7 +957,8 @@
     /* Copy routeset */
     r = acc->route_set.next;
     while (r != &acc->route_set) {
-	pjsip_msg_add_hdr(tdata->msg, pjsip_hdr_clone(tdata->pool, r));
+	pjsip_msg_add_hdr(tdata->msg, 
+			  (pjsip_hdr*)pjsip_hdr_clone(tdata->pool, r));
 	r = r->next;
     }
     
@@ -1036,7 +1040,7 @@
 	return status;
 
     /* Create the contact header */
-    contact->ptr = pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE);
+    contact->ptr = (char*)pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE);
     contact->slen = pj_ansi_snprintf(contact->ptr, PJSIP_MAX_URL_SIZE,
 				     "%.*s%s<%s:%.*s%s%.*s:%d;transport=%s>",
 				     (int)acc->display.slen,
@@ -1097,17 +1101,18 @@
 	pjsip_uri *uri = NULL;
 
 	/* Otherwise URI is Contact URI */
-	h_contact = pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_CONTACT,
+	h_contact = (pjsip_contact_hdr*)
+		    pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_CONTACT,
 				       NULL);
 	if (h_contact)
-	    uri = pjsip_uri_get_uri(h_contact->uri);
+	    uri = (pjsip_uri*) pjsip_uri_get_uri(h_contact->uri);
 	
 
 	/* Or if Contact URI is not present, take the remote URI from
 	 * the From URI.
 	 */
 	if (uri == NULL)
-	    uri = pjsip_uri_get_uri(rdata->msg_info.from->uri);
+	    uri = (pjsip_uri*) pjsip_uri_get_uri(rdata->msg_info.from->uri);
 
 
 	/* Can only do sip/sips scheme at present. */
@@ -1142,7 +1147,7 @@
 	return status;
 
     /* Create the contact header */
-    contact->ptr = pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE);
+    contact->ptr = (char*) pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE);
     contact->slen = pj_ansi_snprintf(contact->ptr, PJSIP_MAX_URL_SIZE,
 				     "%.*s%s<%s:%.*s%s%.*s:%d;transport=%s>",
 				     (int)acc->display.slen,
@@ -1169,7 +1174,7 @@
     PJ_ASSERT_RETURN(pjsua_acc_is_valid(acc_id), PJ_EINVAL);
     acc = &pjsua_var.acc[acc_id];
 
-    PJ_ASSERT_RETURN(tp_id >= 0 && tp_id < PJ_ARRAY_SIZE(pjsua_var.tpdata),
+    PJ_ASSERT_RETURN(tp_id >= 0 && tp_id < (int)PJ_ARRAY_SIZE(pjsua_var.tpdata),
 		     PJ_EINVAL);
     
     acc->cfg.transport_id = tp_id;
diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c
index 0f4f470..e1b6d27 100644
--- a/pjsip/src/pjsua-lib/pjsua_call.c
+++ b/pjsip/src/pjsua-lib/pjsua_call.c
@@ -203,14 +203,14 @@
     pjsip_inv_session *inv = NULL;
     pjsua_acc *acc;
     pjsua_call *call;
-    unsigned call_id;
+    int call_id = -1;
     pj_str_t contact;
     pjsip_tx_data *tdata;
     pj_status_t status;
 
 
     /* Check that account is valid */
-    PJ_ASSERT_RETURN(acc_id>=0 || acc_id<PJ_ARRAY_SIZE(pjsua_var.acc), 
+    PJ_ASSERT_RETURN(acc_id>=0 || acc_id<(int)PJ_ARRAY_SIZE(pjsua_var.acc), 
 		     PJ_EINVAL);
 
     /* Options must be zero for now */
@@ -230,12 +230,12 @@
     }
 
     /* Find free call slot. */
-    for (call_id=0; call_id<pjsua_var.ua_cfg.max_calls; ++call_id) {
+    for (call_id=0; call_id<(int)pjsua_var.ua_cfg.max_calls; ++call_id) {
 	if (pjsua_var.calls[call_id].inv == NULL)
 	    break;
     }
 
-    if (call_id == pjsua_var.ua_cfg.max_calls) {
+    if (call_id == (int)pjsua_var.ua_cfg.max_calls) {
 	pjsua_perror(THIS_FILE, "Error making file", PJ_ETOOMANY);
 	PJSUA_UNLOCK();
 	return PJ_ETOOMANY;
@@ -507,7 +507,7 @@
 	pj_str_t st_text = { "OK", 2 };
 
 	/* Get the replaced call instance */
-	replaced_call = replaced_dlg->mod_data[pjsua_var.mod.id];
+	replaced_call = (pjsua_call*) replaced_dlg->mod_data[pjsua_var.mod.id];
 
 	/* Notify application */
 	pjsua_var.ua_cfg.cb.on_call_replace_request(replaced_call->index,
@@ -690,7 +690,7 @@
 	replaced_inv = pjsip_dlg_get_inv_session(replaced_dlg);
 
 	/* Get the replaced call instance */
-	replaced_call = replaced_dlg->mod_data[pjsua_var.mod.id];
+	replaced_call = (pjsua_call*) replaced_dlg->mod_data[pjsua_var.mod.id];
 
 	/* Notify application */
 	if (pjsua_var.ua_cfg.cb.on_call_replaced)
@@ -1377,13 +1377,13 @@
 		      dest_dlg->call_id->id.slen +
 		      dest_dlg->remote.info->tag.slen +
 		      dest_dlg->local.info->tag.slen + 32 
-		      < sizeof(str_dest_buf), PJSIP_EURITOOLONG);
+		      < (long)sizeof(str_dest_buf), PJSIP_EURITOOLONG);
 
     /* Print URI */
     str_dest_buf[0] = '<';
     str_dest.slen = 1;
 
-    uri = pjsip_uri_get_uri(dest_dlg->remote.info->uri);
+    uri = (pjsip_uri*) pjsip_uri_get_uri(dest_dlg->remote.info->uri);
     len = pjsip_uri_print(PJSIP_URI_IN_REQ_URI, uri, 
 		          str_dest_buf+1, sizeof(str_dest_buf)-1);
     if (len < 0)
@@ -1509,7 +1509,7 @@
     pjsua_process_msg_data( tdata, msg_data);
 
     /* Create IM data and attach to the request. */
-    im_data = pj_pool_zalloc(tdata->pool, sizeof(*im_data));
+    im_data = PJ_POOL_ZALLOC_T(tdata->pool, pjsua_im_data);
     im_data->acc_id = call->acc_id;
     im_data->call_id = call_id;
     im_data->to = call->inv->dlg->remote.info_str;
@@ -1934,7 +1934,7 @@
 
     PJSUA_LOCK();
 
-    call = inv->dlg->mod_data[pjsua_var.mod.id];
+    call = (pjsua_call*) inv->dlg->mod_data[pjsua_var.mod.id];
 
     if (!call) {
 	PJSUA_UNLOCK();
@@ -2104,7 +2104,7 @@
 
     PJSUA_LOCK();
 
-    call = inv->dlg->mod_data[pjsua_var.mod.id];
+    call = (pjsua_call*) inv->dlg->mod_data[pjsua_var.mod.id];
 
     if (status != PJ_SUCCESS) {
 
@@ -2231,7 +2231,7 @@
 
     PJSUA_LOCK();
 
-    call = inv->dlg->mod_data[pjsua_var.mod.id];
+    call = (pjsua_call*) inv->dlg->mod_data[pjsua_var.mod.id];
 
     /*
      * See if remote is offering active media (i.e. not on-hold)
@@ -2314,7 +2314,7 @@
 	const pj_str_t REFER_SUB = { "Refer-Sub", 9 };
 	pjsua_call *call;
 
-	call = pjsip_evsub_get_mod_data(sub, pjsua_var.mod.id);
+	call = (pjsua_call*) pjsip_evsub_get_mod_data(sub, pjsua_var.mod.id);
 
 	/* Must be receipt of response message */
 	pj_assert(event->type == PJSIP_EVENT_TSX_STATE && 
@@ -2377,7 +2377,7 @@
 	pj_bool_t cont;
 	pj_status_t status;
 
-	call = pjsip_evsub_get_mod_data(sub, pjsua_var.mod.id);
+	call = (pjsua_call*) pjsip_evsub_get_mod_data(sub, pjsua_var.mod.id);
 
 	/* When subscription is terminated, clear the xfer_sub member of 
 	 * the inv_data.
@@ -2421,7 +2421,7 @@
 	    }
 
 	    /* Try to parse the content */
-	    status = pjsip_parse_status_line(body->data, body->len, 
+	    status = pjsip_parse_status_line((char*)body->data, body->len, 
 					     &status_line);
 	    if (status != PJ_SUCCESS) {
 		PJ_LOG(4,(THIS_FILE, 
@@ -2466,7 +2466,7 @@
     if (pjsip_evsub_get_state(sub) == PJSIP_EVSUB_STATE_TERMINATED) {
 	pjsua_call *call;
 
-	call = pjsip_evsub_get_mod_data(sub, pjsua_var.mod.id);
+	call = (pjsua_call*) pjsip_evsub_get_mod_data(sub, pjsua_var.mod.id);
 	if (!call)
 	    return;
 
@@ -2501,7 +2501,7 @@
     pjsip_status_code code;
     pjsip_evsub *sub;
 
-    existing_call = inv->dlg->mod_data[pjsua_var.mod.id];
+    existing_call = (pjsua_call*) inv->dlg->mod_data[pjsua_var.mod.id];
 
     /* Find the Refer-To header */
     refer_to = (pjsip_generic_string_hdr*)
@@ -2528,7 +2528,8 @@
     /* Find optional Referred-By header (to be copied onto outgoing INVITE
      * request.
      */
-    ref_by_hdr = pjsip_msg_find_hdr_by_name(rdata->msg_info.msg, &str_ref_by, 
+    ref_by_hdr = (pjsip_hdr*)
+		 pjsip_msg_find_hdr_by_name(rdata->msg_info.msg, &str_ref_by, 
 					    NULL);
 
     /* Notify callback */
@@ -2655,7 +2656,8 @@
      * to the outgoing INVITE request.
      */
     if (ref_by_hdr != NULL) {
-	pjsip_hdr *dup = pjsip_hdr_clone(rdata->tp_info.pool, ref_by_hdr);
+	pjsip_hdr *dup = (pjsip_hdr*)
+			 pjsip_hdr_clone(rdata->tp_info.pool, ref_by_hdr);
 	pj_list_push_back(&msg_data.hdr_list, dup);
     }
 
@@ -2710,7 +2712,7 @@
 					    pjsip_transaction *tsx,
 					    pjsip_event *e)
 {
-    pjsua_call *call = inv->dlg->mod_data[pjsua_var.mod.id];
+    pjsua_call *call = (pjsua_call*) inv->dlg->mod_data[pjsua_var.mod.id];
 
     PJSUA_LOCK();
 
@@ -2772,7 +2774,7 @@
 	if (tsx->status_code >= 200) {
 	    pjsua_im_data *im_data;
 
-	    im_data = tsx->mod_data[pjsua_var.mod.id];
+	    im_data = (pjsua_im_data*) tsx->mod_data[pjsua_var.mod.id];
 	    /* im_data can be NULL if this is typing indication */
 
 	    if (im_data && pjsua_var.ua_cfg.cb.on_pager_status) {
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c
index 162d2da..7452343 100644
--- a/pjsip/src/pjsua-lib/pjsua_core.c
+++ b/pjsip/src/pjsua-lib/pjsua_core.c
@@ -164,25 +164,29 @@
     /* Add Allow header */
     cap_hdr = pjsip_endpt_get_capability(pjsua_var.endpt, PJSIP_H_ALLOW, NULL);
     if (cap_hdr) {
-	pjsip_msg_add_hdr(tdata->msg, pjsip_hdr_clone(tdata->pool, cap_hdr));
+	pjsip_msg_add_hdr(tdata->msg, 
+			  (pjsip_hdr*) pjsip_hdr_clone(tdata->pool, cap_hdr));
     }
 
     /* Add Accept header */
     cap_hdr = pjsip_endpt_get_capability(pjsua_var.endpt, PJSIP_H_ACCEPT, NULL);
     if (cap_hdr) {
-	pjsip_msg_add_hdr(tdata->msg, pjsip_hdr_clone(tdata->pool, cap_hdr));
+	pjsip_msg_add_hdr(tdata->msg, 
+			  (pjsip_hdr*) pjsip_hdr_clone(tdata->pool, cap_hdr));
     }
 
     /* Add Supported header */
     cap_hdr = pjsip_endpt_get_capability(pjsua_var.endpt, PJSIP_H_SUPPORTED, NULL);
     if (cap_hdr) {
-	pjsip_msg_add_hdr(tdata->msg, pjsip_hdr_clone(tdata->pool, cap_hdr));
+	pjsip_msg_add_hdr(tdata->msg, 
+			  (pjsip_hdr*) pjsip_hdr_clone(tdata->pool, cap_hdr));
     }
 
     /* Add Allow-Events header from the evsub module */
     cap_hdr = pjsip_evsub_get_allow_events_hdr(NULL);
     if (cap_hdr) {
-	pjsip_msg_add_hdr(tdata->msg, pjsip_hdr_clone(tdata->pool, cap_hdr));
+	pjsip_msg_add_hdr(tdata->msg, 
+			  (pjsip_hdr*) pjsip_hdr_clone(tdata->pool, cap_hdr));
     }
 
     /* Add User-Agent header */
@@ -1455,7 +1459,8 @@
     pj_bzero(info, sizeof(*info));
 
     /* Make sure id is in range. */
-    PJ_ASSERT_RETURN(id>=0 && id<PJ_ARRAY_SIZE(pjsua_var.tpdata), PJ_EINVAL);
+    PJ_ASSERT_RETURN(id>=0 && id<(int)PJ_ARRAY_SIZE(pjsua_var.tpdata), 
+		     PJ_EINVAL);
 
     /* Make sure that transport exists */
     PJ_ASSERT_RETURN(pjsua_var.tpdata[id].data.ptr != NULL, PJ_EINVAL);
@@ -1523,7 +1528,8 @@
 						pj_bool_t enabled)
 {
     /* Make sure id is in range. */
-    PJ_ASSERT_RETURN(id>=0 && id<PJ_ARRAY_SIZE(pjsua_var.tpdata), PJ_EINVAL);
+    PJ_ASSERT_RETURN(id>=0 && id<(int)PJ_ARRAY_SIZE(pjsua_var.tpdata), 
+		     PJ_EINVAL);
 
     /* Make sure that transport exists */
     PJ_ASSERT_RETURN(pjsua_var.tpdata[id].data.ptr != NULL, PJ_EINVAL);
@@ -1546,7 +1552,8 @@
     pj_status_t status;
 
     /* Make sure id is in range. */
-    PJ_ASSERT_RETURN(id>=0 && id<PJ_ARRAY_SIZE(pjsua_var.tpdata), PJ_EINVAL);
+    PJ_ASSERT_RETURN(id>=0 && id<(int)PJ_ARRAY_SIZE(pjsua_var.tpdata), 
+		     PJ_EINVAL);
 
     /* Make sure that transport exists */
     PJ_ASSERT_RETURN(pjsua_var.tpdata[id].data.ptr != NULL, PJ_EINVAL);
@@ -1639,7 +1646,7 @@
     while (hdr && hdr != &msg_data->hdr_list) {
 	pjsip_hdr *new_hdr;
 
-	new_hdr = pjsip_hdr_clone(tdata->pool, hdr);
+	new_hdr = (pjsip_hdr*) pjsip_hdr_clone(tdata->pool, hdr);
 	pjsip_msg_add_hdr(tdata->msg, new_hdr);
 
 	hdr = hdr->next;
@@ -1671,7 +1678,7 @@
     while (r != route_set) {
 	pjsip_route_hdr *new_r;
 
-	new_r = pjsip_hdr_clone(tdata->pool, r);
+	new_r = (pjsip_route_hdr*) pjsip_hdr_clone(tdata->pool, r);
 	pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*)new_r);
 
 	r = r->next;
@@ -1718,7 +1725,7 @@
     if (tp_id == PJSUA_INVALID_ID)
 	return;
 
-    pj_assert(tp_id >= 0 && tp_id < PJ_ARRAY_SIZE(pjsua_var.tpdata));
+    pj_assert(tp_id >= 0 && tp_id < (int)PJ_ARRAY_SIZE(pjsua_var.tpdata));
     tpdata = &pjsua_var.tpdata[tp_id];
 
     flag = pjsip_transport_get_flag_from_type(tpdata->type);
@@ -1748,7 +1755,7 @@
     pool = pj_pool_create(&pjsua_var.cp.factory, "check%p", 1024, 0, NULL);
     if (!pool) return -1;
 
-    url = pj_pool_alloc(pool, len+1);
+    url = (char*) pj_pool_alloc(pool, len+1);
     pj_ansi_strcpy(url, c_url);
 
     p = pjsip_parse_uri(pool, url, len, 0);
diff --git a/pjsip/src/pjsua-lib/pjsua_im.c b/pjsip/src/pjsua-lib/pjsua_im.c
index f9f945e..b22d6f8 100644
--- a/pjsip/src/pjsua-lib/pjsua_im.c
+++ b/pjsip/src/pjsua-lib/pjsua_im.c
@@ -112,7 +112,8 @@
     /* Request MUST have message body, with Content-Type equal to
      * "text/plain".
      */
-    ctype = pjsip_msg_find_hdr(msg, PJSIP_H_CONTENT_TYPE, NULL);
+    ctype = (pjsip_ctype_hdr*)
+	    pjsip_msg_find_hdr(msg, PJSIP_H_CONTENT_TYPE, NULL);
     if (msg->body == NULL || ctype == NULL || 
 	!acceptable_message(&ctype->media)) 
     {
@@ -142,11 +143,12 @@
 
 
     /* Build remote contact */
-    contact_hdr = pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_CONTACT,
+    contact_hdr = (pjsip_contact_hdr*)
+		  pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_CONTACT,
 				     NULL);
     if (contact_hdr) {
-	contact.ptr = pj_pool_alloc(rdata->tp_info.pool, 
-				    PJSIP_MAX_URL_SIZE);
+	contact.ptr = (char*) pj_pool_alloc(rdata->tp_info.pool, 
+				    	    PJSIP_MAX_URL_SIZE);
 	contact.slen = pjsip_uri_print(PJSIP_URI_IN_CONTACT_HDR,
 				       contact_hdr->uri, contact.ptr,
 				       PJSIP_MAX_URL_SIZE);
@@ -162,7 +164,7 @@
 	pj_str_t text_body;
 	
 	/* Save text body */
-	text_body.ptr = rdata->msg_info.msg->body->data;
+	text_body.ptr = (char*) rdata->msg_info.msg->body->data;
 	text_body.slen = rdata->msg_info.msg->body->len;
 
 	if (pjsua_var.ua_cfg.cb.on_pager) {
@@ -175,9 +177,9 @@
 	pj_status_t status;
 	pj_bool_t is_typing;
 
-	status = pjsip_iscomposing_parse( rdata->tp_info.pool, body->data,
-					  body->len, &is_typing, NULL, NULL,
-					  NULL );
+	status = pjsip_iscomposing_parse(rdata->tp_info.pool, (char*)body->data,
+					 body->len, &is_typing, NULL, NULL,
+					 NULL );
 	if (status != PJ_SUCCESS) {
 	    pjsua_perror(THIS_FILE, "Invalid MESSAGE body", status);
 	    return;
@@ -240,8 +242,9 @@
      * Contact header contains the port number information. If this is
      * not available, then use From header.
      */
-    from.ptr = pj_pool_alloc(rdata->tp_info.pool, PJSIP_MAX_URL_SIZE);
-    contact_hdr = pjsip_msg_find_hdr(rdata->msg_info.msg,
+    from.ptr = (char*) pj_pool_alloc(rdata->tp_info.pool, PJSIP_MAX_URL_SIZE);
+    contact_hdr = (pjsip_contact_hdr*)
+		  pjsip_msg_find_hdr(rdata->msg_info.msg,
 				     PJSIP_H_CONTACT, NULL);
     if (contact_hdr) {
 	from.slen = pjsip_uri_print(PJSIP_URI_IN_CONTACT_HDR,
@@ -257,7 +260,7 @@
 	from = pj_str("<--URI is too long-->");
 
     /* Build the To text. */
-    to.ptr = pj_pool_alloc(rdata->tp_info.pool, PJSIP_MAX_URL_SIZE);
+    to.ptr = (char*) pj_pool_alloc(rdata->tp_info.pool, PJSIP_MAX_URL_SIZE);
     to.slen = pjsip_uri_print( PJSIP_URI_IN_FROMTO_HDR, 
 			       rdata->msg_info.to->uri,
 			       to.ptr, PJSIP_MAX_URL_SIZE);
@@ -275,7 +278,7 @@
 /* Outgoing IM callback. */
 static void im_callback(void *token, pjsip_event *e)
 {
-    pjsua_im_data *im_data = token;
+    pjsua_im_data *im_data = (pjsua_im_data*) token;
 
     if (e->type == PJSIP_EVENT_TSX_STATE) {
 
@@ -352,7 +355,7 @@
  */
 static void typing_callback(void *token, pjsip_event *e)
 {
-    pjsua_im_data *im_data = token;
+    pjsua_im_data *im_data = (pjsua_im_data*) token;
 
     if (e->type == PJSIP_EVENT_TSX_STATE) {
 
@@ -463,7 +466,7 @@
     /* Create IM data to keep message details and give it back to
      * application on the callback
      */
-    im_data = pj_pool_zalloc(tdata->pool, sizeof(*im_data));
+    im_data = PJ_POOL_ZALLOC_T(tdata->pool, pjsua_im_data);
     im_data->acc_id = acc_id;
     im_data->call_id = PJSUA_INVALID_ID;
     pj_strdup_with_null(tdata->pool, &im_data->to, to);
@@ -570,7 +573,7 @@
     pjsua_set_msg_route_set(tdata, &pjsua_var.acc[acc_id].route_set);
 
     /* Create data to reauthenticate */
-    im_data = pj_pool_zalloc(tdata->pool, sizeof(*im_data));
+    im_data = PJ_POOL_ZALLOC_T(tdata->pool, pjsua_im_data);
     im_data->acc_id = acc_id;
 
     /* Send request (statefully) */
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index 7e5f101..2c5b31b 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -1237,7 +1237,7 @@
  */
 PJ_DEF(pjsua_conf_port_id) pjsua_player_get_conf_port(pjsua_player_id id)
 {
-    PJ_ASSERT_RETURN(id>=0 && id<PJ_ARRAY_SIZE(pjsua_var.player), PJ_EINVAL);
+    PJ_ASSERT_RETURN(id>=0&&id<(int)PJ_ARRAY_SIZE(pjsua_var.player), PJ_EINVAL);
     PJ_ASSERT_RETURN(pjsua_var.player[id].port != NULL, PJ_EINVAL);
 
     return pjsua_var.player[id].slot;
@@ -1249,7 +1249,7 @@
 PJ_DEF(pj_status_t) pjsua_player_get_port( pjsua_recorder_id id,
 					   pjmedia_port **p_port)
 {
-    PJ_ASSERT_RETURN(id>=0 && id<PJ_ARRAY_SIZE(pjsua_var.player), PJ_EINVAL);
+    PJ_ASSERT_RETURN(id>=0&&id<(int)PJ_ARRAY_SIZE(pjsua_var.player), PJ_EINVAL);
     PJ_ASSERT_RETURN(pjsua_var.player[id].port != NULL, PJ_EINVAL);
     PJ_ASSERT_RETURN(p_port != NULL, PJ_EINVAL);
     
@@ -1264,7 +1264,7 @@
 PJ_DEF(pj_status_t) pjsua_player_set_pos( pjsua_player_id id,
 					  pj_uint32_t samples)
 {
-    PJ_ASSERT_RETURN(id>=0 && id<PJ_ARRAY_SIZE(pjsua_var.player), PJ_EINVAL);
+    PJ_ASSERT_RETURN(id>=0&&id<(int)PJ_ARRAY_SIZE(pjsua_var.player), PJ_EINVAL);
     PJ_ASSERT_RETURN(pjsua_var.player[id].port != NULL, PJ_EINVAL);
     PJ_ASSERT_RETURN(pjsua_var.player[id].type == 0, PJ_EINVAL);
 
@@ -1278,7 +1278,7 @@
  */
 PJ_DEF(pj_status_t) pjsua_player_destroy(pjsua_player_id id)
 {
-    PJ_ASSERT_RETURN(id>=0 && id<PJ_ARRAY_SIZE(pjsua_var.player), PJ_EINVAL);
+    PJ_ASSERT_RETURN(id>=0&&id<(int)PJ_ARRAY_SIZE(pjsua_var.player), PJ_EINVAL);
     PJ_ASSERT_RETURN(pjsua_var.player[id].port != NULL, PJ_EINVAL);
 
     PJSUA_LOCK();
@@ -1414,7 +1414,8 @@
  */
 PJ_DEF(pjsua_conf_port_id) pjsua_recorder_get_conf_port(pjsua_recorder_id id)
 {
-    PJ_ASSERT_RETURN(id>=0 && id<PJ_ARRAY_SIZE(pjsua_var.recorder), PJ_EINVAL);
+    PJ_ASSERT_RETURN(id>=0 && id<(int)PJ_ARRAY_SIZE(pjsua_var.recorder), 
+		     PJ_EINVAL);
     PJ_ASSERT_RETURN(pjsua_var.recorder[id].port != NULL, PJ_EINVAL);
 
     return pjsua_var.recorder[id].slot;
@@ -1426,7 +1427,8 @@
 PJ_DEF(pj_status_t) pjsua_recorder_get_port( pjsua_recorder_id id,
 					     pjmedia_port **p_port)
 {
-    PJ_ASSERT_RETURN(id>=0 && id<PJ_ARRAY_SIZE(pjsua_var.recorder), PJ_EINVAL);
+    PJ_ASSERT_RETURN(id>=0 && id<(int)PJ_ARRAY_SIZE(pjsua_var.recorder), 
+		     PJ_EINVAL);
     PJ_ASSERT_RETURN(pjsua_var.recorder[id].port != NULL, PJ_EINVAL);
     PJ_ASSERT_RETURN(p_port != NULL, PJ_EINVAL);
 
@@ -1439,7 +1441,8 @@
  */
 PJ_DEF(pj_status_t) pjsua_recorder_destroy(pjsua_recorder_id id)
 {
-    PJ_ASSERT_RETURN(id>=0 && id<PJ_ARRAY_SIZE(pjsua_var.recorder), PJ_EINVAL);
+    PJ_ASSERT_RETURN(id>=0 && id<(int)PJ_ARRAY_SIZE(pjsua_var.recorder), 
+		     PJ_EINVAL);
     PJ_ASSERT_RETURN(pjsua_var.recorder[id].port != NULL, PJ_EINVAL);
 
     PJSUA_LOCK();
diff --git a/pjsip/src/pjsua-lib/pjsua_pres.c b/pjsip/src/pjsua-lib/pjsua_pres.c
index 0a9ad74..f9c51dd 100644
--- a/pjsip/src/pjsua-lib/pjsua_pres.c
+++ b/pjsip/src/pjsua-lib/pjsua_pres.c
@@ -37,7 +37,7 @@
  */
 PJ_DEF(pj_bool_t) pjsua_buddy_is_valid(pjsua_buddy_id buddy_id)
 {
-    return buddy_id>=0 && buddy_id<PJ_ARRAY_SIZE(pjsua_var.buddy) &&
+    return buddy_id>=0 && buddy_id<(int)PJ_ARRAY_SIZE(pjsua_var.buddy) &&
 	   pjsua_var.buddy[buddy_id].uri.slen != 0;
 }
 
@@ -152,7 +152,7 @@
     PJSUA_LOCK();
 
     /* Find empty slot */
-    for (index=0; index<PJ_ARRAY_SIZE(pjsua_var.buddy); ++index) {
+    for (index=0; index<(int)PJ_ARRAY_SIZE(pjsua_var.buddy); ++index) {
 	if (pjsua_var.buddy[index].uri.slen == 0)
 	    break;
     }
@@ -423,7 +423,7 @@
 
     PJSUA_LOCK();
 
-    uapres = pjsip_evsub_get_mod_data(sub, pjsua_var.mod.id);
+    uapres = (pjsua_srv_pres*) pjsip_evsub_get_mod_data(sub, pjsua_var.mod.id);
     if (uapres) {
 	PJ_LOG(3,(THIS_FILE, "Server subscription to %s is %s",
 		  uapres->remote, pjsip_evsub_get_state_name(sub)));
@@ -516,9 +516,9 @@
     }
 
     /* Attach our data to the subscription: */
-    uapres = pj_pool_alloc(dlg->pool, sizeof(pjsua_srv_pres));
+    uapres = PJ_POOL_ALLOC_T(dlg->pool, pjsua_srv_pres);
     uapres->sub = sub;
-    uapres->remote = pj_pool_alloc(dlg->pool, PJSIP_MAX_URL_SIZE);
+    uapres->remote = (char*) pj_pool_alloc(dlg->pool, PJSIP_MAX_URL_SIZE);
     status = pjsip_uri_print(PJSIP_URI_IN_REQ_URI, dlg->remote.info->uri,
 			     uapres->remote, PJSIP_MAX_URL_SIZE);
     if (status < 1)
@@ -585,7 +585,7 @@
  */
 static void publish_cb(struct pjsip_publishc_cbparam *param)
 {
-    pjsua_acc *acc = param->token;
+    pjsua_acc *acc = (pjsua_acc*) param->token;
 
     if (param->code/100 != 2 || param->status != PJ_SUCCESS) {
 	if (param->status != PJ_SUCCESS) {
@@ -855,7 +855,7 @@
 
     PJSUA_LOCK();
 
-    buddy = pjsip_evsub_get_mod_data(sub, pjsua_var.mod.id);
+    buddy = (pjsua_buddy*) pjsip_evsub_get_mod_data(sub, pjsua_var.mod.id);
     if (buddy) {
 	PJ_LOG(3,(THIS_FILE, 
 		  "Presence subscription to %.*s is %s",
@@ -888,7 +888,7 @@
 
     PJSUA_LOCK();
 
-    buddy = pjsip_evsub_get_mod_data(sub, pjsua_var.mod.id);
+    buddy = (pjsua_buddy*) pjsip_evsub_get_mod_data(sub, pjsua_var.mod.id);
     if (!buddy) {
 	PJSUA_UNLOCK();
 	return;
@@ -914,14 +914,16 @@
     }
 
     /* Find contact header. */
-    contact_hdr = pjsip_msg_find_hdr(event->body.rx_msg.rdata->msg_info.msg,
+    contact_hdr = (pjsip_contact_hdr*)
+		  pjsip_msg_find_hdr(event->body.rx_msg.rdata->msg_info.msg,
 				     PJSIP_H_CONTACT, NULL);
     if (!contact_hdr) {
 	PJSUA_UNLOCK();
 	return;
     }
 
-    buddy->contact.ptr = pj_pool_alloc(pjsua_var.pool, PJSIP_MAX_URL_SIZE);
+    buddy->contact.ptr = (char*)
+			 pj_pool_alloc(pjsua_var.pool, PJSIP_MAX_URL_SIZE);
     buddy->contact.slen = pjsip_uri_print( PJSIP_URI_IN_CONTACT_HDR,
 					   contact_hdr->uri,
 					   buddy->contact.ptr, 
@@ -945,7 +947,7 @@
 
     PJSUA_LOCK();
 
-    buddy = pjsip_evsub_get_mod_data(sub, pjsua_var.mod.id);
+    buddy = (pjsua_buddy*) pjsip_evsub_get_mod_data(sub, pjsua_var.mod.id);
     if (buddy) {
 	/* Update our info. */
 	pjsip_pres_get_status(sub, &buddy->status);
diff --git a/pjsip/src/test-pjsip/dns_test.c b/pjsip/src/test-pjsip/dns_test.c
index cefc4ed..62484d4 100644
--- a/pjsip/src/test-pjsip/dns_test.c
+++ b/pjsip/src/test-pjsip/dns_test.c
@@ -35,7 +35,7 @@
 	       void *token,
 	       const struct pjsip_server_addresses *addr)
 {
-    struct result *result = token;
+    struct result *result = (struct result*) token;
 
     result->status = status;
     if (status == PJ_SUCCESS)
diff --git a/pjsip/src/test-pjsip/msg_test.c b/pjsip/src/test-pjsip/msg_test.c
index 7bdc49d..7491a0d 100644
--- a/pjsip/src/test-pjsip/msg_test.c
+++ b/pjsip/src/test-pjsip/msg_test.c
@@ -186,8 +186,8 @@
     ref_msg = entry->creator(pool);
 
     /* Create buffer for comparison. */
-    str1.ptr = pj_pool_alloc(pool, BUFLEN);
-    str2.ptr = pj_pool_alloc(pool, BUFLEN);
+    str1.ptr = (char*)pj_pool_alloc(pool, BUFLEN);
+    str2.ptr = (char*)pj_pool_alloc(pool, BUFLEN);
 
     /* Compare message type. */
     if (parsed_msg->type != ref_msg->type) {
@@ -660,11 +660,11 @@
     clen->len = 150;
 
     // Body
-    body = pj_pool_zalloc(pool, sizeof(*body));
+    body = PJ_POOL_ZALLOC_T(pool, pjsip_msg_body);
     msg->body = body;
     body->content_type.type = pj_str("application");
     body->content_type.subtype = pj_str("sdp");
-    body->data = 
+    body->data = (void*)
 	"v=0\r\n"
 	"o=alice 53655765 2353687637 IN IP4 pc33.atlanta.com\r\n"
 	"s=-\r\n"
@@ -672,7 +672,7 @@
 	"c=IN IP4 pc33.atlanta.com\r\n"
 	"m=audio 3456 RTP/AVP 0 1 3 99\r\n"
 	"a=rtpmap:0 PCMU/8000\r\n";
-    body->len = pj_native_strlen(body->data);
+    body->len = pj_native_strlen((const char*) body->data);
     body->print_body = &pjsip_print_text_body;
 
     return msg;
@@ -715,7 +715,7 @@
     zero.u64 = 0;
 
     for (loop=0; loop<LOOP; ++loop) {
-	for (i=0; i<PJ_ARRAY_SIZE(test_array); ++i) {
+	for (i=0; i<(int)PJ_ARRAY_SIZE(test_array); ++i) {
 	    pool = pjsip_endpt_create_pool(endpt, NULL, POOL_SIZE, POOL_SIZE);
 	    status = test_entry( pool, &test_array[i] );
 	    pjsip_endpt_release_pool(endpt, pool);
@@ -1453,7 +1453,9 @@
 	/* Parse the header */
 	hname = pj_str(test->hname);
 	len = strlen(test->hcontent);
-	parsed_hdr1 = pjsip_parse_hdr(pool, &hname, test->hcontent, len, &parsed_len);
+	parsed_hdr1 = (pjsip_hdr*) pjsip_parse_hdr(pool, &hname, 
+						   test->hcontent, len, 
+						   &parsed_len);
 	if (parsed_hdr1 == NULL) {
 	    if (test->flags & HDR_FLAG_PARSE_FAIL) {
 		pj_pool_release(pool);
@@ -1475,7 +1477,7 @@
 	if (test->hshort_name) {
 	    hname = pj_str(test->hshort_name);
 	    len = strlen(test->hcontent);
-	    parsed_hdr2 = pjsip_parse_hdr(pool, &hname, test->hcontent, len, &parsed_len);
+	    parsed_hdr2 = (pjsip_hdr*) pjsip_parse_hdr(pool, &hname, test->hcontent, len, &parsed_len);
 	    if (parsed_hdr2 == NULL) {
 		PJ_LOG(3,(THIS_FILE, "    error parsing header %s: %s", test->hshort_name, test->hcontent));
 		return -510;
@@ -1489,13 +1491,13 @@
 	}
 
 	/* Print the original header */
-	input = pj_pool_alloc(pool, 1024);
+	input = (char*) pj_pool_alloc(pool, 1024);
 	len = pj_ansi_snprintf(input, 1024, "%s: %s", test->hname, test->hcontent);
 	if (len < 1 || len >= 1024)
 	    return -520;
 
 	/* Print the parsed header*/
-	output = pj_pool_alloc(pool, 1024);
+	output = (char*) pj_pool_alloc(pool, 1024);
 	len = pjsip_hdr_print_on(parsed_hdr1, output, 1024);
 	if (len < 1 || len >= 1024) {
 	    PJ_LOG(3,(THIS_FILE, "    header too long: %s: %s", test->hname, test->hcontent));
diff --git a/pjsip/src/test-pjsip/transport_test.c b/pjsip/src/test-pjsip/transport_test.c
index d7ad436..b751c57 100644
--- a/pjsip/src/test-pjsip/transport_test.c
+++ b/pjsip/src/test-pjsip/transport_test.c
@@ -560,7 +560,7 @@
 	rt_test_data[i].timeout_timer.cb = &rt_timeout_timer;
 
 	/* Generate Call-ID for each thread. */
-	rt_test_data[i].call_id.ptr = pj_pool_alloc(pool, rt_call_id.slen+1);
+	rt_test_data[i].call_id.ptr = (char*) pj_pool_alloc(pool, rt_call_id.slen+1);
 	pj_strcpy(&rt_test_data[i].call_id, &rt_call_id);
 	buf[0] = '0' + i;
 	pj_strcat(&rt_test_data[i].call_id, &str_id);
diff --git a/pjsip/src/test-pjsip/tsx_bench.c b/pjsip/src/test-pjsip/tsx_bench.c
index d14a82f..3950827 100644
--- a/pjsip/src/test-pjsip/tsx_bench.c
+++ b/pjsip/src/test-pjsip/tsx_bench.c
@@ -53,7 +53,7 @@
 					      NULL);
 
     /* Create transaction array */
-    tsx = pj_pool_zalloc(request->pool, working_set * sizeof(pj_pool_t*));
+    tsx = (pjsip_transaction**) pj_pool_zalloc(request->pool, working_set * sizeof(pj_pool_t*));
 
     pj_bzero(&mod_tsx_user, sizeof(mod_tsx_user));
     mod_tsx_user.id = -1;
@@ -130,10 +130,10 @@
     pj_bzero(&rdata, sizeof(pjsip_rx_data));
     rdata.tp_info.pool = request->pool;
     rdata.msg_info.msg = request->msg;
-    rdata.msg_info.from = pjsip_msg_find_hdr(request->msg, PJSIP_H_FROM, NULL);
-    rdata.msg_info.to = pjsip_msg_find_hdr(request->msg, PJSIP_H_TO, NULL);
-    rdata.msg_info.cseq = pjsip_msg_find_hdr(request->msg, PJSIP_H_CSEQ, NULL);
-    rdata.msg_info.cid = pjsip_msg_find_hdr(request->msg, PJSIP_H_FROM, NULL);
+    rdata.msg_info.from = (pjsip_from_hdr*) pjsip_msg_find_hdr(request->msg, PJSIP_H_FROM, NULL);
+    rdata.msg_info.to = (pjsip_to_hdr*) pjsip_msg_find_hdr(request->msg, PJSIP_H_TO, NULL);
+    rdata.msg_info.cseq = (pjsip_cseq_hdr*) pjsip_msg_find_hdr(request->msg, PJSIP_H_CSEQ, NULL);
+    rdata.msg_info.cid = (pjsip_cid_hdr*) pjsip_msg_find_hdr(request->msg, PJSIP_H_FROM, NULL);
     rdata.msg_info.via = via;
     
     pj_sockaddr_in_init(&remote, 0, 0);
@@ -147,7 +147,7 @@
 
 
     /* Create transaction array */
-    tsx = pj_pool_zalloc(request->pool, working_set * sizeof(pj_pool_t*));
+    tsx = (pjsip_transaction**) pj_pool_zalloc(request->pool, working_set * sizeof(pj_pool_t*));
 
     pj_bzero(&mod_tsx_user, sizeof(mod_tsx_user));
     mod_tsx_user.id = -1;
diff --git a/pjsip/src/test-pjsip/tsx_uac_test.c b/pjsip/src/test-pjsip/tsx_uac_test.c
index fa6bf77..0e12847 100644
--- a/pjsip/src/test-pjsip/tsx_uac_test.c
+++ b/pjsip/src/test-pjsip/tsx_uac_test.c
@@ -364,7 +364,7 @@
 	    if (e->body.tsx_state.prev_state != PJSIP_TSX_STATE_PROCEEDING) {
 		PJ_LOG(3,(THIS_FILE, 
 			  "    error: prev state is %s instead of %s",
-			  pjsip_tsx_state_str(e->body.tsx_state.prev_state),
+			  pjsip_tsx_state_str((pjsip_tsx_state_e)e->body.tsx_state.prev_state),
 			  pjsip_tsx_state_str(PJSIP_TSX_STATE_PROCEEDING)));
 		test_complete = -739;
 	    }
@@ -547,7 +547,7 @@
 static void send_response_callback( pj_timer_heap_t *timer_heap,
 				    struct pj_timer_entry *entry)
 {
-    struct response *r = entry->user_data;
+    struct response *r = (struct response*) entry->user_data;
     pjsip_transport *tp = r->res_addr.transport;
 
     pjsip_endpt_send_response(endpt, &r->res_addr, r->tdata, NULL, NULL);
@@ -759,7 +759,7 @@
 	pj_assert(status == PJ_SUCCESS);
 
 	/* Schedule sending final response in couple of of secs. */
-	r = pj_pool_alloc(tdata->pool, sizeof(*r));
+	r = PJ_POOL_ALLOC_T(tdata->pool, struct response);
 	r->res_addr = res_addr;
 	r->tdata = tdata;
 	if (r->res_addr.transport)
@@ -880,7 +880,7 @@
 	    pj_assert(status == PJ_SUCCESS);
 
 	    /* Schedule sending final response in couple of of secs. */
-	    r = pj_pool_alloc(tdata->pool, sizeof(*r));
+	    r = PJ_POOL_ALLOC_T(tdata->pool, struct response);
 	    r->res_addr = res_addr;
 	    r->tdata = tdata;
 	    if (r->res_addr.transport)
@@ -968,7 +968,7 @@
     }
 
     /* Set the branch param for test 1. */
-    via = pjsip_msg_find_hdr(tdata->msg, PJSIP_H_VIA, NULL);
+    via = (pjsip_via_hdr*) pjsip_msg_find_hdr(tdata->msg, PJSIP_H_VIA, NULL);
     via->branch_param = pj_str(branch_param);
 
     /* Add additional reference to tdata to prevent transaction from
@@ -1097,7 +1097,7 @@
      */
     enabled = msg_logger_set_enabled(0);
 
-    for (i=0; i<PJ_ARRAY_SIZE(sub_test); ++i) {
+    for (i=0; i<(int)PJ_ARRAY_SIZE(sub_test); ++i) {
 
 	PJ_LOG(3,(THIS_FILE, 
 		  "   variant %c: %s with %d ms network delay",
@@ -1231,7 +1231,7 @@
 	      "  test4: transport fails after several retransmissions test"));
 
 
-    for (i=0; i<PJ_ARRAY_SIZE(delay); ++i) {
+    for (i=0; i<(int)PJ_ARRAY_SIZE(delay); ++i) {
 
 	PJ_LOG(3,(THIS_FILE, 
 		  "   variant %c: transport delay %d ms", ('a'+i), delay[i]));
@@ -1302,7 +1302,7 @@
     PJ_LOG(3,(THIS_FILE, "  %s", title));
 
     /* Do the test. */
-    for (i=0; i<PJ_ARRAY_SIZE(delay); ++i) {
+    for (i=0; i<(int)PJ_ARRAY_SIZE(delay); ++i) {
 	
 	if (test_param->type == PJSIP_TRANSPORT_LOOP_DGRAM) {
 	    PJ_LOG(3,(THIS_FILE, "   variant %c: with %d ms transport delay",
@@ -1343,7 +1343,7 @@
     test_param = param;
 
     /* Get transport flag */
-    tp_flag = pjsip_transport_get_flag_from_type(test_param->type);
+    tp_flag = pjsip_transport_get_flag_from_type((pjsip_transport_type_e)test_param->type);
 
     pj_ansi_sprintf(TARGET_URI, "sip:bob@127.0.0.1:%d;transport=%s", 
 		    param->port, param->tp_type);
diff --git a/pjsip/src/test-pjsip/tsx_uas_test.c b/pjsip/src/test-pjsip/tsx_uas_test.c
index cd9aa05..7ca05a8 100644
--- a/pjsip/src/test-pjsip/tsx_uas_test.c
+++ b/pjsip/src/test-pjsip/tsx_uas_test.c
@@ -208,7 +208,7 @@
 				 struct pj_timer_entry *entry)
 {
     pjsip_transaction *tsx;
-    struct response *r = entry->user_data;
+    struct response *r = (struct response*) entry->user_data;
     pj_status_t status;
 
     tsx = pjsip_tsx_layer_find_tsx(&r->tsx_key, PJ_TRUE);
@@ -276,7 +276,7 @@
 	return;
     }
 
-    r = pj_pool_alloc(tdata->pool, sizeof(*r));
+    r = PJ_POOL_ALLOC_T(tdata->pool, struct response);
     pj_strdup(tdata->pool, &r->tsx_key, tsx_key);
     r->tdata = tdata;
 
@@ -284,7 +284,7 @@
     delay.msec = msec_delay;
     pj_time_val_normalize(&delay);
 
-    t = pj_pool_zalloc(tdata->pool, sizeof(*t));
+    t = PJ_POOL_ZALLOC_T(tdata->pool, pj_timer_entry);
     t->user_data = r;
     t->cb = &send_response_timer;
 
@@ -1096,7 +1096,7 @@
 		uri=(pjsip_sip_uri*)pjsip_uri_get_uri(tdata->msg->line.req.uri);
 		uri->transport_param = pj_str("loop-dgram");
 
-		via = pjsip_msg_find_hdr(tdata->msg, PJSIP_H_VIA, NULL);
+		via = (pjsip_via_hdr*) pjsip_msg_find_hdr(tdata->msg, PJSIP_H_VIA, NULL);
 		via->branch_param = pj_str(TEST9_BRANCH_ID);
 
 		status = pjsip_endpt_send_request_stateless(endpt, tdata,
@@ -1197,7 +1197,7 @@
     }
 
     /* Set the branch param for test 1. */
-    via = pjsip_msg_find_hdr(tdata->msg, PJSIP_H_VIA, NULL);
+    via = (pjsip_via_hdr*) pjsip_msg_find_hdr(tdata->msg, PJSIP_H_VIA, NULL);
     via->branch_param = pj_str(branch_param);
 
     /* Schedule first send. */
@@ -1471,7 +1471,7 @@
     };
     int i, status;
 
-    for (i=0; i<PJ_ARRAY_SIZE(tests); ++i) {
+    for (i=0; i<(int)PJ_ARRAY_SIZE(tests); ++i) {
 	pj_time_val fail_time, end_test, now;
 
 	PJ_LOG(3,(THIS_FILE, "  %s", tests[i].title));
@@ -1532,7 +1532,7 @@
     pj_status_t status;
 
     test_param = param;
-    tp_flag = pjsip_transport_get_flag_from_type(param->type);
+    tp_flag = pjsip_transport_get_flag_from_type((pjsip_transport_type_e)param->type);
 
     pj_ansi_sprintf(TARGET_URI, "sip:bob@127.0.0.1:%d;transport=%s", 
 		    param->port, param->tp_type);
diff --git a/pjsip/src/test-pjsip/txdata_test.c b/pjsip/src/test-pjsip/txdata_test.c
index 851983f..b9272ca 100644
--- a/pjsip/src/test-pjsip/txdata_test.c
+++ b/pjsip/src/test-pjsip/txdata_test.c
@@ -444,7 +444,7 @@
     }
 
     /* Fill up the Via header to prevent syntax error on parsing */
-    via = pjsip_msg_find_hdr(tdata->msg, PJSIP_H_VIA, NULL);
+    via = (pjsip_via_hdr*) pjsip_msg_find_hdr(tdata->msg, PJSIP_H_VIA, NULL);
     via->transport = pj_str("TCP");
     via->sent_by.host = pj_str("127.0.0.1");
 
@@ -707,8 +707,8 @@
     via->rport_param = 0;
     via->branch_param = pj_str("012345678901234567890123456789");
     via->recvd_param = pj_str("192.168.0.7");
-    pjsip_msg_insert_first_hdr(request->msg, pjsip_hdr_clone(request->pool, via));
-    pjsip_msg_insert_first_hdr(request->msg, pjsip_hdr_clone(request->pool, via));
+    pjsip_msg_insert_first_hdr(request->msg, (pjsip_hdr*) pjsip_hdr_clone(request->pool, via));
+    pjsip_msg_insert_first_hdr(request->msg, (pjsip_hdr*) pjsip_hdr_clone(request->pool, via));
     pjsip_msg_insert_first_hdr(request->msg, (pjsip_hdr*)via);
     
 
@@ -716,10 +716,10 @@
     pj_bzero(&rdata, sizeof(pjsip_rx_data));
     rdata.tp_info.pool = request->pool;
     rdata.msg_info.msg = request->msg;
-    rdata.msg_info.from = pjsip_msg_find_hdr(request->msg, PJSIP_H_FROM, NULL);
-    rdata.msg_info.to = pjsip_msg_find_hdr(request->msg, PJSIP_H_TO, NULL);
-    rdata.msg_info.cseq = pjsip_msg_find_hdr(request->msg, PJSIP_H_CSEQ, NULL);
-    rdata.msg_info.cid = pjsip_msg_find_hdr(request->msg, PJSIP_H_FROM, NULL);
+    rdata.msg_info.from = (pjsip_from_hdr*) pjsip_msg_find_hdr(request->msg, PJSIP_H_FROM, NULL);
+    rdata.msg_info.to = (pjsip_to_hdr*) pjsip_msg_find_hdr(request->msg, PJSIP_H_TO, NULL);
+    rdata.msg_info.cseq = (pjsip_cseq_hdr*) pjsip_msg_find_hdr(request->msg, PJSIP_H_CSEQ, NULL);
+    rdata.msg_info.cid = (pjsip_cid_hdr*) pjsip_msg_find_hdr(request->msg, PJSIP_H_FROM, NULL);
     rdata.msg_info.via = via;
 
     /*
diff --git a/pjsip/src/test-pjsip/uri_test.c b/pjsip/src/test-pjsip/uri_test.c
index 0cf34e9..d26df14 100644
--- a/pjsip/src/test-pjsip/uri_test.c
+++ b/pjsip/src/test-pjsip/uri_test.c
@@ -382,7 +382,7 @@
 #define param_add(list,pname,pvalue)  \
 	do { \
 	    pjsip_param *param; \
-	    param=pj_pool_alloc(pool, sizeof(pjsip_param)); \
+	    param=PJ_POOL_ALLOC_T(pool, pjsip_param); \
 	    param->name = pj_str(pname); \
 	    param->value = pj_str(pvalue); \
 	    pj_list_insert_before(&list, param); \
@@ -662,7 +662,7 @@
 
     uri->number = pj_str("911");
     
-    p = pj_pool_alloc(pool, sizeof(*p));
+    p = PJ_POOL_ALLOC_T(pool, pjsip_param);
     p->name = p->value = pj_str("p1");
     pj_list_insert_before(&uri->other_param, p);
 
@@ -725,8 +725,8 @@
     ref_uri = entry->creator(pool);
 
     /* Print both URI. */
-    s1.ptr = pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE);
-    s2.ptr = pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE);
+    s1.ptr = (char*) pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE);
+    s2.ptr = (char*) pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE);
 
     pj_get_timestamp(&t1);
     len = pjsip_uri_print( PJSIP_URI_IN_OTHER, parsed_uri, s1.ptr, PJSIP_MAX_URL_SIZE);