diff --git a/jni/pjproject-android/pjlib/build/os-auto.mak.in b/jni/pjproject-android/pjlib/build/os-auto.mak.in
index 3f35dce..1c7e330 100644
--- a/jni/pjproject-android/pjlib/build/os-auto.mak.in
+++ b/jni/pjproject-android/pjlib/build/os-auto.mak.in
@@ -23,7 +23,8 @@
 #
 # Additional LDFLAGS for pjlib-test
 #
-export TEST_LDFLAGS += @LDFLAGS@ @LIBS@
+# Disabled, as this causes duplicated LDFLAGS, which may raise linking errors
+#export TEST_LDFLAGS += @LDFLAGS@ @LIBS@
 
 #
 # TARGETS are make targets in the Makefile, to be executed for this given
diff --git a/jni/pjproject-android/pjlib/include/pj/compat/cc_gcc.h b/jni/pjproject-android/pjlib/include/pj/compat/cc_gcc.h
index 1d62ff7..1011728 100644
--- a/jni/pjproject-android/pjlib/include/pj/compat/cc_gcc.h
+++ b/jni/pjproject-android/pjlib/include/pj/compat/cc_gcc.h
@@ -1,4 +1,4 @@
-/* $Id: cc_gcc.h 4624 2013-10-21 06:37:30Z ming $ */
+/* $Id: cc_gcc.h 4704 2014-01-16 05:30:46Z ming $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -63,7 +63,7 @@
 #endif
 
 #define PJ_INT64(val)		val##LL
-#define PJ_UINT64(val)		val##LLU
+#define PJ_UINT64(val)		val##ULL
 #define PJ_INT64_FMT		"L"
 
 
diff --git a/jni/pjproject-android/pjlib/include/pj/string.h b/jni/pjproject-android/pjlib/include/pj/string.h
index 849a474..20be005 100644
--- a/jni/pjproject-android/pjlib/include/pj/string.h
+++ b/jni/pjproject-android/pjlib/include/pj/string.h
@@ -1,4 +1,4 @@
-/* $Id: string.h 4440 2013-03-14 07:18:13Z riza $ */
+/* $Id: string.h 4704 2014-01-16 05:30:46Z ming $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -575,6 +575,15 @@
 				   unsigned base);
 
 /**
+ * Convert string to float.
+ *
+ * @param str	the string.
+ *
+ * @return the value.
+ */
+PJ_DECL(float) pj_strtof(const pj_str_t *str);
+
+/**
  * Utility to convert unsigned integer to string. Note that the
  * string will be NULL terminated.
  *
diff --git a/jni/pjproject-android/pjlib/include/pj/types.h b/jni/pjproject-android/pjlib/include/pj/types.h
index 230175a..a592703 100644
--- a/jni/pjproject-android/pjlib/include/pj/types.h
+++ b/jni/pjproject-android/pjlib/include/pj/types.h
@@ -1,4 +1,4 @@
-/* $Id: types.h 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id: types.h 4704 2014-01-16 05:30:46Z ming $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -86,15 +86,18 @@
 #   define PJ_T(literal_str)	literal_str
 #endif
 
+/** Some constants */
+enum pj_constants_
+{
+    /** Status is OK. */
+    PJ_SUCCESS=0,
 
-/** Status is OK. */
-#define PJ_SUCCESS  0
+    /** True value. */
+    PJ_TRUE=1,
 
-/** True value. */
-#define PJ_TRUE	    1
-
-/** False value. */
-#define PJ_FALSE    0
+    /** False value. */
+    PJ_FALSE=0
+};
 
 /**
  * File offset type.
diff --git a/jni/pjproject-android/pjlib/src/pj/ioqueue_epoll.c b/jni/pjproject-android/pjlib/src/pj/ioqueue_epoll.c
index eea57a9..85186dd 100644
--- a/jni/pjproject-android/pjlib/src/pj/ioqueue_epoll.c
+++ b/jni/pjproject-android/pjlib/src/pj/ioqueue_epoll.c
@@ -1,4 +1,4 @@
-/* $Id: ioqueue_epoll.c 4528 2013-05-30 07:01:11Z ming $ */
+/* $Id: ioqueue_epoll.c 4704 2014-01-16 05:30:46Z ming $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjlib/src/pj/string.c b/jni/pjproject-android/pjlib/src/pj/string.c
index 22c3fde..decd58f 100644
--- a/jni/pjproject-android/pjlib/src/pj/string.c
+++ b/jni/pjproject-android/pjlib/src/pj/string.c
@@ -1,4 +1,4 @@
-/* $Id: string.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id: string.c 4704 2014-01-16 05:30:46Z ming $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -175,6 +175,44 @@
     return value;
 }
 
+PJ_DEF(float) pj_strtof(const pj_str_t *str)
+{
+    pj_str_t part;
+    char *pdot;
+    float val;
+
+    if (str->slen == 0)
+	return 0;
+
+    pdot = (char*)pj_memchr(str->ptr, '.', str->slen);
+    part.ptr = str->ptr;
+    part.slen = pdot ? pdot - str->ptr : str->slen;
+
+    if (part.slen)
+	val = (float)pj_strtol(&part);
+    else
+	val = 0;
+
+    if (pdot) {
+	part.ptr = pdot + 1;
+	part.slen = (str->ptr + str->slen - pdot - 1);
+	if (part.slen) {
+	    pj_str_t endptr;
+	    float fpart, fdiv;
+	    int i;
+	    fpart = (float)pj_strtoul2(&part, &endptr, 10);
+	    fdiv = 1.0;
+	    for (i=0; i<(part.slen - endptr.slen); ++i)
+		    fdiv = fdiv * 10;
+	    if (val >= 0)
+		val += (fpart / fdiv);
+	    else
+		val -= (fpart / fdiv);
+	}
+    }
+    return val;
+}
+
 PJ_DEF(int) pj_utoa(unsigned long val, char *buf)
 {
     return pj_utoa_pad(val, buf, 0, 0);
