Index: pjproject/trunk/pjmedia/src/pjmedia/transport_ice.c
===================================================================
--- pjproject/trunk/pjmedia/src/pjmedia/transport_ice.c	(revision 1098)
+++ pjproject/trunk/pjmedia/src/pjmedia/transport_ice.c	(revision 1099)
@@ -20,4 +20,5 @@
 #include <pjnath/errno.h>
 #include <pj/assert.h>
+#include <pj/log.h>
 
 struct transport_ice
@@ -26,11 +27,16 @@
     pj_ice_st		*ice_st;
 
-    void  *stream;
-    void (*rtp_cb)(void*,
-		   const void*,
-		   pj_ssize_t);
-    void (*rtcp_cb)(void*,
-		    const void*,
-		    pj_ssize_t);
+    pj_time_val		 start_ice;
+    
+    void		*stream;
+    pj_sockaddr_in	 remote_rtp;
+    pj_sockaddr_in	 remote_rtcp;
+
+    void	       (*rtp_cb)(void*,
+			         const void*,
+				 pj_ssize_t);
+    void	       (*rtcp_cb)(void*,
+				  const void*,
+				  pj_ssize_t);
 };
 
@@ -69,10 +75,4 @@
 			   const pj_sockaddr_t *src_addr,
 			   unsigned src_addr_len);
-static void ice_on_stun_srv_resolved(pj_ice_st *ice_st,
-				     pj_status_t status);
-static void ice_on_interface_status(pj_ice_st *ice_st,
-				    void *notify_data,
-				    pj_status_t status,
-				    int itf_id);
 static void ice_on_ice_complete(pj_ice_st *ice_st, 
 			        pj_status_t status);
@@ -108,7 +108,5 @@
     pj_bzero(&ice_st_cb, sizeof(ice_st_cb));
     ice_st_cb.on_ice_complete = &ice_on_ice_complete;
-    ice_st_cb.on_interface_status = &ice_on_interface_status;
     ice_st_cb.on_rx_data = &ice_on_rx_data;
-    ice_st_cb.on_stun_srv_resolved = &ice_on_stun_srv_resolved;
 
     /* Create ICE */
@@ -388,4 +386,7 @@
     }
 
+    /* Mark start time */
+    pj_gettimeofday(&tp_ice->start_ice);
+
     /* Start ICE */
     return pj_ice_st_start_ice(tp_ice->ice_st, &uname, &pass, cand_cnt, cand);
@@ -455,7 +456,6 @@
     tp_ice->rtcp_cb = rtcp_cb;
 
-    PJ_UNUSED_ARG(rem_addr);
-    PJ_UNUSED_ARG(rem_rtcp);
-    PJ_UNUSED_ARG(addr_len);
+    pj_memcpy(&tp_ice->remote_rtp, rem_addr, addr_len);
+    pj_memcpy(&tp_ice->remote_rtcp, rem_rtcp, addr_len);
 
     return PJ_SUCCESS;
@@ -481,5 +481,11 @@
 {
     struct transport_ice *tp_ice = (struct transport_ice*)tp;
-    return pj_ice_st_send_data(tp_ice->ice_st, 1, pkt, size);
+    if (tp_ice->ice_st->ice) {
+	return pj_ice_st_send_data(tp_ice->ice_st, 1, pkt, size);
+    } else {
+	return pj_ice_st_sendto(tp_ice->ice_st, 1, 0,
+				pkt, size, &tp_ice->remote_rtp,
+				sizeof(pj_sockaddr_in));
+    }
 }
 
@@ -521,25 +527,39 @@
 
 
-static void ice_on_stun_srv_resolved(pj_ice_st *ice_st,
-				     pj_status_t status)
-{
-    struct transport_ice *tp_ice = (struct transport_ice*) ice_st->user_data;
-}
-
-
-static void ice_on_interface_status(pj_ice_st *ice_st,
-				    void *notify_data,
-				    pj_status_t status,
-				    int itf_id)
-{
-    struct transport_ice *tp_ice = (struct transport_ice*) ice_st->user_data;
-}
-
-
 static void ice_on_ice_complete(pj_ice_st *ice_st, 
 			        pj_status_t status)
 {
     struct transport_ice *tp_ice = (struct transport_ice*) ice_st->user_data;
-}
-
-
+    pj_time_val end_ice;
+    pj_ice_cand *lcand, *rcand;
+    pj_ice_check *check;
+    char src_addr[32];
+    char dst_addr[32];
+
+    if (status != PJ_SUCCESS) {
+	char errmsg[PJ_ERR_MSG_SIZE];
+	pj_strerror(status, errmsg, sizeof(errmsg));
+	PJ_LOG(1,(ice_st->obj_name, "ICE negotiation failed: %s", errmsg));
+	return;
+    }
+
+    pj_gettimeofday(&end_ice);
+    PJ_TIME_VAL_SUB(end_ice, tp_ice->start_ice);
+
+    check = &ice_st->ice->clist.checks[ice_st->ice->valid_list[0]];
+    
+    lcand = check->lcand;
+    rcand = check->rcand;
+
+    pj_ansi_strcpy(src_addr, pj_inet_ntoa(lcand->addr.ipv4.sin_addr));
+    pj_ansi_strcpy(dst_addr, pj_inet_ntoa(rcand->addr.ipv4.sin_addr));
+
+    PJ_LOG(3,(ice_st->obj_name, 
+	      "ICE negotiation completed in %d.%03ds. Sending from "
+	      "%s:%d to %s:%d",
+	      (int)end_ice.sec, (int)end_ice.msec,
+	      src_addr, pj_ntohs(lcand->addr.ipv4.sin_port),
+	      dst_addr, pj_ntohs(rcand->addr.ipv4.sin_port)));
+}
+
+
Index: pjproject/trunk/pjnath/include/pjnath/errno.h
===================================================================
--- pjproject/trunk/pjnath/include/pjnath/errno.h	(revision 1098)
+++ pjproject/trunk/pjnath/include/pjnath/errno.h	(revision 1099)
@@ -134,4 +134,9 @@
  */
 #define PJNATH_ESTUNTSXFAILED	    (PJNATH_ERRNO_START+126)/* 370126 */
+/**
+ * @hideinitializer
+ * STUN mapped address attribute not found
+ */
+#define PJNATH_ESTUNNOMAPPEDADDR    (PJNATH_ERRNO_START+127)/* 370127 */
 
 
Index: pjproject/trunk/pjnath/include/pjnath/ice_stream_transport.h
===================================================================
--- pjproject/trunk/pjnath/include/pjnath/ice_stream_transport.h	(revision 1098)
+++ pjproject/trunk/pjnath/include/pjnath/ice_stream_transport.h	(revision 1099)
@@ -49,11 +49,4 @@
 			  const pj_sockaddr_t *src_addr,
 			  unsigned src_addr_len);
-
-    void    (*on_stun_srv_resolved)(pj_ice_st *ice_st,
-				    pj_status_t status);
-    void    (*on_interface_status)(pj_ice_st *ice_st,
-				   void *notify_data,
-				   pj_status_t status,
-				   int itf_id);
     void    (*on_ice_complete)(pj_ice_st *ice_st, 
 			       pj_status_t status);
@@ -86,4 +79,5 @@
     pj_sockaddr		 src_addr;
     int			 src_addr_len;
+    pj_stun_session	*stun_sess;
 } pj_ice_st_interface;
 
@@ -134,17 +128,12 @@
 						  pj_uint16_t local_pref,
 					          const pj_sockaddr_in *addr,
-				    		  unsigned *p_itf_id,
-						  pj_bool_t notify,
-						  void *notify_data);
+				    		  unsigned *p_itf_id);
 PJ_DECL(pj_status_t) pj_ice_st_add_all_host_interfaces(pj_ice_st *ice_st,
 						       unsigned comp_id,
-						       unsigned port,
-						       pj_bool_t notify,
-						       void *notify_data);
+						       unsigned port);
 PJ_DECL(pj_status_t) pj_ice_st_add_stun_interface(pj_ice_st *ice_st,
 						  unsigned comp_id,
 						  unsigned local_port,
-						  pj_bool_t notify,
-						  void *notify_data);
+						  unsigned *p_itf_id);
 PJ_DECL(pj_status_t) pj_ice_st_add_relay_interface(pj_ice_st *ice_st,
 						   unsigned comp_id,
@@ -172,4 +161,11 @@
 					 const void *data,
 					 pj_size_t data_len);
+PJ_DECL(pj_status_t) pj_ice_st_sendto(pj_ice_st *ice_st,
+				      unsigned comp_id,
+				      unsigned itf_id,
+				      const void *data,
+				      pj_size_t data_len,
+				      const pj_sockaddr_t *dst_addr,
+				      int dst_addr_len);
 
 
Index: pjproject/trunk/pjnath/src/pjnath/ice.c
===================================================================
--- pjproject/trunk/pjnath/src/pjnath/ice.c	(revision 1098)
+++ pjproject/trunk/pjnath/src/pjnath/ice.c	(revision 1099)
@@ -57,9 +57,4 @@
 };
 
-const pj_str_t host_foundation = {"host", 4};
-const pj_str_t mapped_foundation = {"srfx", 4};
-const pj_str_t relayed_foundation = {"rlyd", 4};
-const pj_str_t peer_mapped_foundation = {"peer", 4};
-
 #define CHECK_NAME_LEN	    128
 #define LOG(expr)	    PJ_LOG(4,expr)
@@ -1432,9 +1427,15 @@
     if (i == ice->lcand_cnt) {
 	unsigned cand_id;
+	char buf[32];
+	pj_str_t foundation;
+
+	pj_ansi_snprintf(buf, sizeof(buf), "P%x", 
+			 lcand->base_addr.ipv4.sin_addr.s_addr);
+	foundation = pj_str(buf);
 
 	/* Add new peer reflexive candidate */
 	status = pj_ice_add_cand(ice, lcand->comp_id, 
 				 PJ_ICE_CAND_TYPE_PRFLX,
-				 65535, &peer_mapped_foundation,
+				 65535, &foundation,
 				 &xaddr->sockaddr, &lcand->base_addr, NULL,
 				 sizeof(pj_sockaddr_in), &cand_id);
Index: pjproject/trunk/pjnath/src/pjnath/ice_stream_transport.c
===================================================================
--- pjproject/trunk/pjnath/src/pjnath/ice_stream_transport.c	(revision 1098)
+++ pjproject/trunk/pjnath/src/pjnath/ice_stream_transport.c	(revision 1099)
@@ -48,4 +48,16 @@
 static void destroy_ice_st(pj_ice_st *ice_st, pj_status_t reason);
 
+/* STUN session callback */
+static pj_status_t stun_on_send_msg(pj_stun_session *sess,
+				    const void *pkt,
+				    pj_size_t pkt_size,
+				    const pj_sockaddr_t *dst_addr,
+				    unsigned addr_len);
+static void stun_on_request_complete(pj_stun_session *sess,
+				     pj_status_t status,
+				     pj_stun_tx_data *tdata,
+				     const pj_stun_msg *response);
+
+/* Utility: print error */
 static void ice_st_perror(pj_ice_st *ice_st, const char *title, 
 			  pj_status_t status)
@@ -161,4 +173,5 @@
     pj_ice_st_interface *is = (pj_ice_st_interface*) 
 			      pj_ioqueue_get_user_data(key);
+    pj_ice_st *ice_st = is->ice_st;
     pj_ssize_t pkt_size;
     pj_status_t status;
@@ -169,9 +182,27 @@
 	 * packets to the ICE session. Otherwise just drop the packet.
 	 */
-	if (is->ice_st->ice) {
-	    status = pj_ice_on_rx_pkt(is->ice_st->ice, 
+	if (ice_st->ice) {
+	    status = pj_ice_on_rx_pkt(ice_st->ice, 
 				      is->comp_id, is->cand_id,
 				      is->pkt, bytes_read,
 				      &is->src_addr, is->src_addr_len);
+	} else if (is->stun_sess) {
+	    status = pj_stun_msg_check(is->pkt, bytes_read, PJ_STUN_IS_DATAGRAM);
+	    if (status == PJ_SUCCESS) {
+		status = pj_stun_session_on_rx_pkt(is->stun_sess, is->pkt, 
+						   bytes_read, 
+						   PJ_STUN_IS_DATAGRAM, NULL,
+						   &is->src_addr, 
+						   is->src_addr_len);
+	    } else {
+		(*ice_st->cb.on_rx_data)(ice_st, is->comp_id, is->cand_id, 
+					 is->pkt, bytes_read, 
+					 &is->src_addr, is->src_addr_len);
+
+	    }
+	} else {
+	    (*ice_st->cb.on_rx_data)(ice_st, is->comp_id, is->cand_id, 
+				     is->pkt, bytes_read, 
+				     &is->src_addr, is->src_addr_len);
 	}
 
@@ -196,4 +227,9 @@
 static void destroy_ice_interface(pj_ice_st_interface *is)
 {
+    if (is->stun_sess) {
+	pj_stun_session_destroy(is->stun_sess);
+	is->stun_sess = NULL;
+    }
+
     if (is->key) {
 	pj_ioqueue_unregister(is->key);
@@ -345,6 +381,5 @@
 /* Add interface */
 static void add_interface(pj_ice_st *ice_st, pj_ice_st_interface *is,
-			  unsigned *p_itf_id, pj_bool_t notify,
-			  void *notify_data)
+			  unsigned *p_itf_id)
 {
     unsigned itf_id;
@@ -355,9 +390,4 @@
     if (p_itf_id)
 	*p_itf_id = itf_id;
-
-    if (notify && ice_st->cb.on_interface_status) {
-	(*ice_st->cb.on_interface_status)(ice_st, notify_data, 
-					  PJ_SUCCESS, itf_id);
-    }
 }
 
@@ -369,7 +399,5 @@
 						 pj_uint16_t local_pref,
 					         const pj_sockaddr_in *addr,
-				    		 unsigned *p_itf_id,
-						 pj_bool_t notify,
-						 void *notify_data)
+				    		 unsigned *p_itf_id)
 {
     pj_ice_st_interface *is;
@@ -395,5 +423,5 @@
 
     /* Store this interface */
-    add_interface(ice_st, is, p_itf_id, notify, notify_data);
+    add_interface(ice_st, is, p_itf_id);
 
     /* Set interface status to SUCCESS */
@@ -408,7 +436,5 @@
 PJ_DEF(pj_status_t) pj_ice_st_add_all_host_interfaces(pj_ice_st *ice_st,
 						      unsigned comp_id,
-						      unsigned port,
-						      pj_bool_t notify,
-						      void *notify_data)
+						      unsigned port)
 {
     pj_sockaddr_in addr;
@@ -424,6 +450,5 @@
 	return status;
 
-    return pj_ice_st_add_host_interface(ice_st, comp_id, 65535, &addr, 
-					NULL, notify, notify_data);
+    return pj_ice_st_add_host_interface(ice_st, comp_id, 65535, &addr, NULL);
 }
 
@@ -434,14 +459,59 @@
 						 unsigned comp_id,
 						 unsigned local_port,
-						 pj_bool_t notify,
-						 void *notify_data)
-{
-    /* Yeah, TODO */
-    PJ_UNUSED_ARG(ice_st);
-    PJ_UNUSED_ARG(comp_id);
-    PJ_UNUSED_ARG(local_port);
-    PJ_UNUSED_ARG(notify);
-    PJ_UNUSED_ARG(notify_data);
-    return -1;
+						 unsigned *p_itf_id)
+{
+    pj_ice_st_interface *is;
+    pj_sockaddr_in local_addr;
+    pj_stun_session_cb sess_cb;
+    pj_stun_tx_data *tdata;
+    pj_status_t status;
+
+    PJ_ASSERT_RETURN(ice_st && comp_id, PJ_EINVAL);
+    
+    /* STUN server must have been configured */
+    PJ_ASSERT_RETURN(ice_st->stun_srv.sin_family != 0, PJ_EINVALIDOP);
+
+
+    /* Create interface */
+    pj_sockaddr_in_init(&local_addr, NULL, (pj_uint16_t)local_port);
+    status = create_ice_interface(ice_st, PJ_ICE_CAND_TYPE_SRFLX, comp_id,
+				  65535, &local_addr, &is);
+    if (status != PJ_SUCCESS)
+	return status;
+
+    /* Create STUN session */
+    pj_bzero(&sess_cb, sizeof(sess_cb));
+    sess_cb.on_request_complete = &stun_on_request_complete;
+    sess_cb.on_send_msg = &stun_on_send_msg;
+    status = pj_stun_session_create(&ice_st->stun_cfg, ice_st->obj_name,
+				    &sess_cb, PJ_FALSE, &is->stun_sess);
+    if (status != PJ_SUCCESS)
+	goto on_error;
+
+    /* Associate interface with STUN session */
+    pj_stun_session_set_user_data(is->stun_sess, (void*)is);
+
+    /* Create and send STUN binding request */
+    status = pj_stun_session_create_req(is->stun_sess, 
+					PJ_STUN_BINDING_REQUEST, &tdata);
+    if (status != PJ_SUCCESS)
+	goto on_error;
+
+    status = pj_stun_session_send_msg(is->stun_sess, PJ_FALSE, 
+				      &ice_st->stun_srv, 
+				      sizeof(pj_sockaddr_in), tdata);
+    if (status != PJ_SUCCESS)
+	goto on_error;
+
+    /* Mark interface as pending */
+    is->status = PJ_EPENDING;
+
+    add_interface(ice_st, is, p_itf_id);
+
+    return PJ_SUCCESS;
+
+on_error:
+    destroy_ice_interface(is);
+    return status;
 }
 
@@ -625,4 +695,27 @@
 
 /*
+ * Send packet using non-ICE means (e.g. when ICE was not negotiated).
+ */
+PJ_DEF(pj_status_t) pj_ice_st_sendto( pj_ice_st *ice_st,
+				      unsigned comp_id,
+				      unsigned itf_id,
+				      const void *data,
+				      pj_size_t data_len,
+				      const pj_sockaddr_t *dst_addr,
+				      int dst_addr_len)
+{
+    pj_ssize_t pkt_size;
+    pj_ice_st_interface *is = ice_st->itfs[itf_id];
+    pj_status_t status;
+
+    pkt_size = data_len;
+    status = pj_ioqueue_sendto(is->key, &is->write_op, 
+			       data, &pkt_size, 0,
+			       dst_addr, dst_addr_len);
+    
+    return (status==PJ_SUCCESS||status==PJ_EPENDING) ? PJ_SUCCESS : status;
+}
+
+/*
  * Callback called by ICE session when ICE processing is complete, either
  * successfully or with failure.
@@ -688,3 +781,71 @@
 }
 
-
+/*
+ * Callback called by STUN session to send outgoing packet.
+ */
+static pj_status_t stun_on_send_msg(pj_stun_session *sess,
+				    const void *pkt,
+				    pj_size_t size,
+				    const pj_sockaddr_t *dst_addr,
+				    unsigned dst_addr_len)
+{
+    pj_ice_st_interface *is;
+    pj_ssize_t pkt_size;
+    pj_status_t status;
+
+    is = (pj_ice_st_interface*) pj_stun_session_get_user_data(sess);
+    pkt_size = size;
+    status = pj_ioqueue_sendto(is->key, &is->write_op, 
+			       pkt, &pkt_size, 0,
+			       dst_addr, dst_addr_len);
+    
+    return (status==PJ_SUCCESS||status==PJ_EPENDING) ? PJ_SUCCESS : status;
+}
+
+/*
+ * Callback sent by STUN session when outgoing STUN request has
+ * completed.
+ */
+static void stun_on_request_complete(pj_stun_session *sess,
+				     pj_status_t status,
+				     pj_stun_tx_data *tdata,
+				     const pj_stun_msg *response)
+{
+    pj_ice_st_interface *is;
+    pj_stun_xor_mapped_addr_attr *xa;
+    pj_stun_mapped_addr_attr *ma;
+    pj_sockaddr *mapped_addr;
+
+    PJ_UNUSED_ARG(tdata);
+
+    is = (pj_ice_st_interface*) pj_stun_session_get_user_data(sess);
+    if (status != PJ_SUCCESS) {
+	is->status = status;
+	ice_st_perror(is->ice_st, "STUN Binding request failed", is->status);
+	return;
+    }
+
+    xa = (pj_stun_xor_mapped_addr_attr*)
+	 pj_stun_msg_find_attr(response, PJ_STUN_ATTR_XOR_MAPPED_ADDR, 0);
+    ma = (pj_stun_mapped_addr_attr*)
+	 pj_stun_msg_find_attr(response, PJ_STUN_ATTR_MAPPED_ADDR, 0);
+
+    if (xa)
+	mapped_addr = &xa->sockaddr;
+    else if (ma)
+	mapped_addr = &ma->sockaddr;
+    else {
+	is->status = PJNATH_ESTUNNOMAPPEDADDR;
+	ice_st_perror(is->ice_st, "STUN Binding request failed", is->status);
+	return;
+    }
+
+    PJ_LOG(4,(is->ice_st->obj_name, 
+	      "STUN mapped address: %s:%d",
+	      pj_inet_ntoa(mapped_addr->ipv4.sin_addr),
+	      (int)pj_ntohs(mapped_addr->ipv4.sin_port)));
+    pj_memcpy(&is->addr, mapped_addr, sizeof(pj_sockaddr_in));
+    is->status = PJ_SUCCESS;
+
+}
+
Index: pjproject/trunk/pjnath/src/pjnath/stun_session.c
===================================================================
--- pjproject/trunk/pjnath/src/pjnath/stun_session.c	(revision 1098)
+++ pjproject/trunk/pjnath/src/pjnath/stun_session.c	(revision 1099)
@@ -281,8 +281,10 @@
 
     /* Create and add USERNAME attribute */
-    status = pj_stun_msg_add_string_attr(pool, msg,
-					 PJ_STUN_ATTR_USERNAME,
-					 &username);
-    PJ_ASSERT_RETURN(status==PJ_SUCCESS, status);
+    if (username.slen) {
+	status = pj_stun_msg_add_string_attr(pool, msg,
+					     PJ_STUN_ATTR_USERNAME,
+					     &username);
+	PJ_ASSERT_RETURN(status==PJ_SUCCESS, status);
+    }
 
     /* Add REALM only when long term credential is used */
@@ -302,6 +304,8 @@
 
     /* Add MESSAGE-INTEGRITY attribute */
-    status = pj_stun_msg_add_msgint_attr(pool, msg);
-    PJ_ASSERT_RETURN(status==PJ_SUCCESS, status);
+    if (username.slen) {
+	status = pj_stun_msg_add_msgint_attr(pool, msg);
+	PJ_ASSERT_RETURN(status==PJ_SUCCESS, status);
+    }
 
 
Index: pjproject/trunk/pjsip/src/pjsua-lib/pjsua_acc.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsua-lib/pjsua_acc.c	(revision 1098)
+++ pjproject/trunk/pjsip/src/pjsua-lib/pjsua_acc.c	(revision 1099)
@@ -944,4 +944,10 @@
     acc = &pjsua_var.acc[acc_id];
 
+    /* If force_contact is configured, then use use it */
+    if (acc->cfg.force_contact.slen) {
+	*contact = acc->cfg.force_contact;
+	return PJ_SUCCESS;
+    }
+
     /* If route-set is configured for the account, then URI is the 
      * first entry of the route-set.
@@ -1038,4 +1044,10 @@
     acc = &pjsua_var.acc[acc_id];
 
+    /* If force_contact is configured, then use use it */
+    if (acc->cfg.force_contact.slen) {
+	*contact = acc->cfg.force_contact;
+	return PJ_SUCCESS;
+    }
+
     /* If Record-Route is present, then URI is the top Record-Route. */
     if (rdata->msg_info.record_route) {
Index: pjproject/trunk/pjsip/src/pjsua-lib/pjsua_core.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsua-lib/pjsua_core.c	(revision 1098)
+++ pjproject/trunk/pjsip/src/pjsua-lib/pjsua_core.c	(revision 1099)
@@ -676,4 +676,11 @@
 		pjsua_var.stun_srv.ipv4.sin_addr = *(pj_in_addr*)he.h_addr;
 		pjsua_var.stun_srv.ipv4.sin_port = pj_htons((pj_uint16_t)3478);
+
+		PJ_LOG(4,(THIS_FILE, 
+			  "STUN server %.*s resolved, address is %s:%d",
+			  (int)pjsua_var.ua_cfg.stun_srv.slen,
+			  pjsua_var.ua_cfg.stun_srv.ptr,
+			  pj_inet_ntoa(pjsua_var.stun_srv.ipv4.sin_addr),
+			  (int)pj_ntohs(pjsua_var.stun_srv.ipv4.sin_port)));
 	    }
 	}
Index: pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c
===================================================================
--- pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c	(revision 1098)
+++ pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c	(revision 1099)
@@ -572,6 +572,5 @@
 
 	/* Add host candidates for RTP */
-	status = pj_ice_st_add_all_host_interfaces(ice_st, 1, 0, 
-						   PJ_FALSE, NULL);
+	status = pj_ice_st_add_all_host_interfaces(ice_st, 1, 0);
 	if (status != PJ_SUCCESS) {
 	    pjsua_perror(THIS_FILE, "Error adding ICE host candidates",
@@ -593,6 +592,5 @@
 
 	    /* Add STUN server reflexive candidate for RTP */
-	    status = pj_ice_st_add_stun_interface(ice_st, 1, 0, 
-						  PJ_FALSE, NULL);
+	    status = pj_ice_st_add_stun_interface(ice_st, 1, 0, NULL);
 	    if (status != PJ_SUCCESS) {
 		pjsua_perror(THIS_FILE, "Error adding ICE address",
