diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update
index 1c3f3f8db1..4381f69034 100644
--- a/libs/sofia-sip/.update
+++ b/libs/sofia-sip/.update
@@ -1 +1 @@
-Wed May  7 08:28:38 EDT 2008
+Fri May  9 13:42:29 EDT 2008
diff --git a/libs/sofia-sip/libsofia-sip-ua/nta/nta.c b/libs/sofia-sip/libsofia-sip-ua/nta/nta.c
index 13d79538e0..c3cf55255a 100644
--- a/libs/sofia-sip/libsofia-sip-ua/nta/nta.c
+++ b/libs/sofia-sip/libsofia-sip-ua/nta/nta.c
@@ -2063,11 +2063,16 @@ int outgoing_insert_via(nta_outgoing_t *orq,
     clear = 1, v->v_protocol = via->v_protocol;
 
   /* XXX - should we do this? */
-  if (via->v_host != v->v_host &&
+  if (!user_via &&
+      via->v_host != v->v_host &&
       str0cmp(via->v_host, v->v_host))
     clear = 1, v->v_host = via->v_host;
 
-  if (via->v_port != v->v_port &&
+  if ((!user_via ||
+       /* Replace port in user Via only if we use udp and no rport */
+       (v->v_protocol == sip_transport_udp && !v->v_rport && 
+	!orq->orq_stateless)) &&
+      via->v_port != v->v_port &&
       str0cmp(via->v_port, v->v_port))
     clear = 1, v->v_port = via->v_port;