diff --git a/pjsip/src/test-pjsip/uri_test.c b/pjsip/src/test-pjsip/uri_test.c
index 46edd66..28bdedd 100644
--- a/pjsip/src/test-pjsip/uri_test.c
+++ b/pjsip/src/test-pjsip/uri_test.c
@@ -317,7 +317,7 @@
 static pjsip_uri *create_uri0(pj_pool_t *pool)
 {
     /* "sip:localhost" */
-    pjsip_url *url = pjsip_url_create(pool, 0);
+    pjsip_sip_uri *url = pjsip_url_create(pool, 0);
 
     pj_strdup2(pool, &url->host, "localhost");
     return (pjsip_uri*)url;
@@ -326,7 +326,7 @@
 static pjsip_uri *create_uri1(pj_pool_t *pool)
 {
     /* "sip:user@localhost" */
-    pjsip_url *url = pjsip_url_create(pool, 0);
+    pjsip_sip_uri *url = pjsip_url_create(pool, 0);
 
     pj_strdup2( pool, &url->user, "user");
     pj_strdup2( pool, &url->host, "localhost");
@@ -337,7 +337,7 @@
 static pjsip_uri *create_uri2(pj_pool_t *pool)
 {
     /* "sip:user:password@localhost:5060" */
-    pjsip_url *url = pjsip_url_create(pool, 0);
+    pjsip_sip_uri *url = pjsip_url_create(pool, 0);
 
     pj_strdup2( pool, &url->user, "user");
     pj_strdup2( pool, &url->passwd, "password");
@@ -350,7 +350,7 @@
 static pjsip_uri *create_uri3(pj_pool_t *pool)
 {
     /* Like: "sip:localhost:5060", but without the port. */
-    pjsip_url *url = pjsip_url_create(pool, 0);
+    pjsip_sip_uri *url = pjsip_url_create(pool, 0);
 
     pj_strdup2(pool, &url->host, "localhost");
     return (pjsip_uri*)url;
@@ -359,7 +359,7 @@
 static pjsip_uri *create_uri4(pj_pool_t *pool)
 {
     /* "sip:localhost;transport=tcp;user=ip;ttl=255;lr;maddr=127.0.0.1;method=ACK" */
-    pjsip_url *url = pjsip_url_create(pool, 0);
+    pjsip_sip_uri *url = pjsip_url_create(pool, 0);
 
     pj_strdup2(pool, &url->host, "localhost");
     pj_strdup2(pool, &url->transport_param, "tcp");
@@ -386,7 +386,7 @@
     /* "sip:localhost;pickup=hurry;user=phone;message=I%20am%20sorry"
        "?Subject=Hello%20There&Server=SIP%20Server" 
      */
-    pjsip_url *url = pjsip_url_create(pool, 0);
+    pjsip_sip_uri *url = pjsip_url_create(pool, 0);
 
     pj_strdup2(pool, &url->host, "localhost");
     pj_strdup2(pool, &url->user_param, "phone");
@@ -405,7 +405,7 @@
 static pjsip_uri *create_uri6(pj_pool_t *pool)
 {
     /* "sips:localhost" */
-    pjsip_url *url = pjsip_url_create(pool, 1);
+    pjsip_sip_uri *url = pjsip_url_create(pool, 1);
 
     pj_strdup2(pool, &url->host, "localhost");
     return (pjsip_uri*)url;
@@ -415,7 +415,7 @@
 {
     /* "<sip:localhost>" */
     pjsip_name_addr *name_addr = pjsip_name_addr_create(pool);
-    pjsip_url *url;
+    pjsip_sip_uri *url;
 
     url = pjsip_url_create(pool, 0);
     name_addr->uri = (pjsip_uri*) url;
@@ -428,7 +428,7 @@
 {
     /* "  Power Administrator <sips:localhost>" */
     pjsip_name_addr *name_addr = pjsip_name_addr_create(pool);
-    pjsip_url *url;
+    pjsip_sip_uri *url;
 
     url = pjsip_url_create(pool, 1);
     name_addr->uri = (pjsip_uri*) url;
@@ -442,7 +442,7 @@
 {
     /* " \"User\" <sip:user@localhost:5071>" */
     pjsip_name_addr *name_addr = pjsip_name_addr_create(pool);
-    pjsip_url *url;
+    pjsip_sip_uri *url;
 
     url = pjsip_url_create(pool, 0);
     name_addr->uri = (pjsip_uri*) url;
@@ -458,7 +458,7 @@
 {
     /* " \"Strange User\\\"\\\\\\\"\" <sip:localhost>" */
     pjsip_name_addr *name_addr = pjsip_name_addr_create(pool);
-    pjsip_url *url;
+    pjsip_sip_uri *url;
 
     url = pjsip_url_create(pool, 0);
     name_addr->uri = (pjsip_uri*) url;
@@ -472,7 +472,7 @@
 {
     /* " \"Rogue User\\\" <sip:localhost>" */
     pjsip_name_addr *name_addr = pjsip_name_addr_create(pool);
-    pjsip_url *url;
+    pjsip_sip_uri *url;
 
     url = pjsip_url_create(pool, 0);
     name_addr->uri = (pjsip_uri*) url;
@@ -486,7 +486,7 @@
 {
     /* "Strange User\" <sip:localhost>" */
     pjsip_name_addr *name_addr = pjsip_name_addr_create(pool);
-    pjsip_url *url;
+    pjsip_sip_uri *url;
 
     url = pjsip_url_create(pool, 0);
     name_addr->uri = (pjsip_uri*) url;
@@ -499,7 +499,7 @@
 static pjsip_uri *create_uri13(pj_pool_t *pool)
 {
     /* "sip:localhost;pvalue=\"hello world\"" */
-    pjsip_url *url;
+    pjsip_sip_uri *url;
     url = pjsip_url_create(pool, 0);
     pj_strdup2(pool, &url->host, "localhost");
     //pj_strdup2(pool, &url->other_param, ";pvalue=\"hello world\"");
@@ -511,7 +511,7 @@
 {
     /* "This is -. !% *_+`'~ me <sip:a19A&=+$,;?/%2c:%40a&Zz=+$,@my_proxy09.my-domain.com:9801>" */
     pjsip_name_addr *name_addr = pjsip_name_addr_create(pool);
-    pjsip_url *url;
+    pjsip_sip_uri *url;
 
     url = pjsip_url_create(pool, 0);
     name_addr->uri = (pjsip_uri*) url;
@@ -527,7 +527,7 @@
 static pjsip_uri *create_uri15(pj_pool_t *pool)
 {
     /* "sip:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.com" */
-    pjsip_url *url;
+    pjsip_sip_uri *url;
     url = pjsip_url_create(pool, 0);
     pj_strdup2(pool, &url->host, ALPHANUM "-_.com");
     return (pjsip_uri*)url;
@@ -536,7 +536,7 @@
 static pjsip_uri *create_uri16(pj_pool_t *pool)
 {
     /* "sip:" USER_CHAR ":" PASS_CHAR "@host" */
-    pjsip_url *url;
+    pjsip_sip_uri *url;
     url = pjsip_url_create(pool, 0);
     pj_strdup2(pool, &url->user, USER_CHAR);
     pj_strdup2(pool, &url->passwd, PASS_CHAR);
@@ -547,7 +547,7 @@
 static pjsip_uri *create_uri17(pj_pool_t *pool)
 {
     /* "sip:host;user=ip;" PARAM_CHAR "%21=" PARAM_CHAR "%21;lr;other=1;transport=sctp;other2" */
-    pjsip_url *url;
+    pjsip_sip_uri *url;
     url = pjsip_url_create(pool, 0);
     pj_strdup2(pool, &url->host, "host");
     pj_strdup2(pool, &url->user_param, "ip");
