diff --git a/libs/sofia-sip/libsofia-sip-ua/sip/sip_parser.c b/libs/sofia-sip/libsofia-sip-ua/sip/sip_parser.c
index 92abd70f77..4d75e705c6 100644
--- a/libs/sofia-sip/libsofia-sip-ua/sip/sip_parser.c
+++ b/libs/sofia-sip/libsofia-sip-ua/sip/sip_parser.c
@@ -451,6 +451,8 @@ sip_method_t sip_method_code(char const *name)
 char const sip_transport_udp[] = "SIP/2.0/UDP";
 char const sip_transport_tcp[] = "SIP/2.0/TCP";
 char const sip_transport_sctp[] = "SIP/2.0/SCTP";
+char const sip_transport_ws[] = "SIP/2.0/WS";
+char const sip_transport_wss[] = "SIP/2.0/WSS";
 char const sip_transport_tls[] = "SIP/2.0/TLS";
 
 /** Decode transport */
@@ -470,6 +472,8 @@ issize_t sip_transport_d(char **ss, char const **ttransport)
       (!TRANSPORT_MATCH(sip_transport_udp) &&
        !TRANSPORT_MATCH(sip_transport_tcp) &&
        !TRANSPORT_MATCH(sip_transport_sctp) &&
+       !TRANSPORT_MATCH(sip_transport_ws) &&
+       !TRANSPORT_MATCH(sip_transport_wss) &&
        !TRANSPORT_MATCH(sip_transport_tls))) {
     /* Protocol name */
     transport = pn = s;
@@ -512,6 +516,10 @@ issize_t sip_transport_d(char **ss, char const **ttransport)
 	transport = sip_transport_tcp;
       else if (su_casematch(transport, sip_transport_sctp))
 	transport = sip_transport_sctp;
+      else if (su_casematch(transport, sip_transport_ws))
+	transport = sip_transport_ws;
+      else if (su_casematch(transport, sip_transport_wss))
+	transport = sip_transport_wss;
       else if (su_casematch(transport, sip_transport_tls))
 	transport = sip_transport_tls;
     }
@@ -529,10 +537,14 @@ isize_t sip_transport_xtra(char const *transport)
   if (transport == sip_transport_udp ||
       transport == sip_transport_tcp ||
       transport == sip_transport_sctp ||
+      transport == sip_transport_ws ||
+      transport == sip_transport_wss ||
       transport == sip_transport_tls ||
       su_casematch(transport, sip_transport_udp) ||
       su_casematch(transport, sip_transport_tcp) ||
       su_casematch(transport, sip_transport_sctp) ||
+      su_casematch(transport, sip_transport_ws) ||
+      su_casematch(transport, sip_transport_wss) ||
       su_casematch(transport, sip_transport_tls))
     return 0;
 
@@ -550,6 +562,10 @@ void sip_transport_dup(char **pp, char const **dd, char const *s)
     *dd = s;
   else if (s == sip_transport_tls)
     *dd = s;
+  else if (s == sip_transport_ws)
+    *dd = s;
+  else if (s == sip_transport_wss)
+    *dd = s;
   else if (su_casematch(s, sip_transport_udp))
     *dd = sip_transport_udp;
   else if (su_casematch(s, sip_transport_tcp))
@@ -558,6 +574,10 @@ void sip_transport_dup(char **pp, char const **dd, char const *s)
     *dd = sip_transport_sctp;
   else if (su_casematch(s, sip_transport_tls))
     *dd = sip_transport_tls;
+  else if (su_casematch(s, sip_transport_ws))
+    *dd = sip_transport_ws;
+  else if (su_casematch(s, sip_transport_wss))
+    *dd = sip_transport_wss;
   else
     MSG_STRING_DUP(*pp, *dd, s);
 }
diff --git a/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_header.h b/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_header.h
index c75500d19d..484c0a2fe8 100644
--- a/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_header.h
+++ b/libs/sofia-sip/libsofia-sip-ua/sip/sofia-sip/sip_header.h
@@ -162,6 +162,10 @@ SOFIAPUBVAR char const sip_transport_tcp[];
 SOFIAPUBVAR char const sip_transport_sctp[];
 /** @internal TLS transport version string. */
 SOFIAPUBVAR char const sip_transport_tls[];
+/** @internal WS transport version string. */
+SOFIAPUBVAR char const sip_transport_ws[];
+/** @internal WSS transport version string. */
+SOFIAPUBVAR char const sip_transport_wss[];
 /** @internal SIP version string. */
 SOFIAPUBVAR char const sip_version_2_0[];