Index: phapi/phapi.c
===================================================================
--- phapi/phapi.c	(revision 300)
+++ phapi/phapi.c	(revision 301)
@@ -1341,4 +1341,5 @@
 #define FROM_PORT 2
 #define FROM_FORCEPORT 4
+#define FROM_NRUSERNAME 8
 
 static void
@@ -1352,10 +1353,13 @@
 	assert(vl != NULL);
 
-	if (vl->mobility == PH_LINE_MOBILITY_PHONE)
+	if (checkmobility(vl->mobility,PH_LINE_MOBILITY_PHONE))
 		uphone=";user=phone";
 
 
-
-	un = nonempty(vl->username) ? vl->username : "unknown";
+	if (flags & FROM_NRUSERNAME)
+		un = nonempty(vl->nrusername) ? vl->nrusername : "unknown";
+	else
+		un = nonempty(vl->rusername) ? vl->rusername : "unknown";
+
 	s = nonempty(vl->server) ? vl->server : "localhost";
 	if ((vl->port >= 0 && vl->port != 5060 && (flags & FROM_PORT)) || (vl->port == 5060 && (flags & FROM_FORCEPORT)))
@@ -1385,5 +1389,5 @@
 ph_build_from(char *buf, int n, struct vline *vl)
 {
-	ph_build_from2(buf, n, vl, FROM_DISPLAYNAME);
+	ph_build_from2(buf, n, vl, FROM_DISPLAYNAME|FROM_NRUSERNAME);
 }
 
@@ -1398,9 +1402,9 @@
 	if (!eXosip_build_contact_str(fbuf, 0, &ctct))
 	{
-		osip_strncpy(buf, ctct, n-1);
+		strncpy(buf, ctct, n);
 		osip_free(ctct);
 		return;
 	}
-	osip_strncpy(buf, fbuf, n-1);
+	strncpy(buf, fbuf, n);
 
 
@@ -1530,5 +1534,5 @@
 		strcpy(from, "<sip:anonymous@anonymous.invalid>");
 	else
-		ph_build_from2(from, sizeof(from), vl, FROM_DISPLAYNAME & FROM_PORT);
+		ph_build_from2(from, sizeof(from), vl, FROM_DISPLAYNAME | FROM_PORT | FROM_NRUSERNAME);
 
 	proxy = vl->proxy;
@@ -1577,5 +1581,5 @@
 	{
 		if (!ca0->sdpctx) {
-			ca0->sdpctx = sdp_handler_create_context(&ph_sdp_handler, local_ip, vl->username, 0);
+			ca0->sdpctx = sdp_handler_create_context(&ph_sdp_handler, local_ip, vl->nrusername, 0);
 			ca0->cfg =  &phcfg;
 			sdp_context_set_user_pointer(ca0->sdpctx, ca0);
@@ -2123,5 +2127,5 @@
 
 		if (!ca->sdpctx) {
-			ca->sdpctx = sdp_handler_create_context(&ph_sdp_handler, local_ip, vl->username, 0);
+			ca->sdpctx = sdp_handler_create_context(&ph_sdp_handler, local_ip, vl->nrusername, 0);
 			ca->cfg =  &phcfg;
 			sdp_context_set_user_pointer(ca->sdpctx, ca);
@@ -3001,21 +3005,21 @@
 
 	assert(vl!=NULL);
-	assert(vl->username!=NULL);
+	assert(vl->rusername!=NULL);
 	assert(vl->server!=NULL);
 
 	if (vl->displayname)
-		snprintf(utmp, sizeof(utmp), "\"%s\" <sip:%s@%s>", vl->displayname, vl->username, vl->server);
+		snprintf(utmp, sizeof(utmp), "\"%s\" <sip:%s@%s>", vl->displayname, vl->rusername, vl->server);
 	else
-		snprintf(utmp, sizeof(utmp), "sip:%s@%s", vl->username, vl->server);
+		snprintf(utmp, sizeof(utmp), "sip:%s@%s", vl->rusername, vl->server);
 
 	server = stmp;
 	if (vl->port && vl->port != 5060)
 	{
-		/*     snprintf(stmp, sizeof(stmp), "sip:%s@%s:%d", vl->username, vl->server, vl->port); */
+		/*     snprintf(stmp, sizeof(stmp), "sip:%s@%s:%d", vl->rusername, vl->server, vl->port); */
 		snprintf(stmp, sizeof(stmp), "sip:%s:%d", vl->server, vl->port);
 	}
 	else
 	{
-		/*     snprintf(stmp, sizeof(stmp), "sip:%s@%s:%d", vl->username, vl->server, vl->port); */
+		/*     snprintf(stmp, sizeof(stmp), "sip:%s@%s:%d", vl->rusername, vl->server, vl->port); */
 		snprintf(stmp, sizeof(stmp), "sip:%s", vl->server);
 	}
