@@ -34,7 +34,9 @@ c_str_view URL_SCHEME_FILE;
3434c_str_view URL_SCHEME_FTP;
3535c_str_view URL_SCHEME_GOPHER;
3636c_str_view URL_SCHEME_HTTP;
37+ c_str_view URL_SCHEME_HTTP_UDS;
3738c_str_view URL_SCHEME_HTTPS;
39+ c_str_view URL_SCHEME_HTTPS_UDS;
3840c_str_view URL_SCHEME_WSS;
3941c_str_view URL_SCHEME_WS;
4042c_str_view URL_SCHEME_MAILTO;
@@ -142,32 +144,35 @@ url_init()
142144
143145 hdrtoken_init ();
144146
145- URL_SCHEME_FILE = hdrtoken_string_to_wks_sv (" file" );
146- URL_SCHEME_FTP = hdrtoken_string_to_wks_sv (" ftp" );
147- URL_SCHEME_GOPHER = hdrtoken_string_to_wks_sv (" gopher" );
148- URL_SCHEME_HTTP = hdrtoken_string_to_wks_sv (" http" );
149- URL_SCHEME_HTTPS = hdrtoken_string_to_wks_sv (" https" );
150- URL_SCHEME_WSS = hdrtoken_string_to_wks_sv (" wss" );
151- URL_SCHEME_WS = hdrtoken_string_to_wks_sv (" ws" );
152- URL_SCHEME_MAILTO = hdrtoken_string_to_wks_sv (" mailto" );
153- URL_SCHEME_NEWS = hdrtoken_string_to_wks_sv (" news" );
154- URL_SCHEME_NNTP = hdrtoken_string_to_wks_sv (" nntp" );
155- URL_SCHEME_PROSPERO = hdrtoken_string_to_wks_sv (" prospero" );
156- URL_SCHEME_TELNET = hdrtoken_string_to_wks_sv (" telnet" );
157- URL_SCHEME_TUNNEL = hdrtoken_string_to_wks_sv (" tunnel" );
158- URL_SCHEME_WAIS = hdrtoken_string_to_wks_sv (" wais" );
159- URL_SCHEME_PNM = hdrtoken_string_to_wks_sv (" pnm" );
160- URL_SCHEME_RTSP = hdrtoken_string_to_wks_sv (" rtsp" );
161- URL_SCHEME_RTSPU = hdrtoken_string_to_wks_sv (" rtspu" );
162- URL_SCHEME_MMS = hdrtoken_string_to_wks_sv (" mms" );
163- URL_SCHEME_MMSU = hdrtoken_string_to_wks_sv (" mmsu" );
164- URL_SCHEME_MMST = hdrtoken_string_to_wks_sv (" mmst" );
147+ URL_SCHEME_FILE = hdrtoken_string_to_wks_sv (" file" );
148+ URL_SCHEME_FTP = hdrtoken_string_to_wks_sv (" ftp" );
149+ URL_SCHEME_GOPHER = hdrtoken_string_to_wks_sv (" gopher" );
150+ URL_SCHEME_HTTP = hdrtoken_string_to_wks_sv (" http" );
151+ URL_SCHEME_HTTP_UDS = c_str_view (" http+unix" , 9 );
152+ URL_SCHEME_HTTPS = hdrtoken_string_to_wks_sv (" https" );
153+ URL_SCHEME_HTTPS_UDS = c_str_view (" https+unix" , 10 );
154+ URL_SCHEME_WSS = hdrtoken_string_to_wks_sv (" wss" );
155+ URL_SCHEME_WS = hdrtoken_string_to_wks_sv (" ws" );
156+ URL_SCHEME_MAILTO = hdrtoken_string_to_wks_sv (" mailto" );
157+ URL_SCHEME_NEWS = hdrtoken_string_to_wks_sv (" news" );
158+ URL_SCHEME_NNTP = hdrtoken_string_to_wks_sv (" nntp" );
159+ URL_SCHEME_PROSPERO = hdrtoken_string_to_wks_sv (" prospero" );
160+ URL_SCHEME_TELNET = hdrtoken_string_to_wks_sv (" telnet" );
161+ URL_SCHEME_TUNNEL = hdrtoken_string_to_wks_sv (" tunnel" );
162+ URL_SCHEME_WAIS = hdrtoken_string_to_wks_sv (" wais" );
163+ URL_SCHEME_PNM = hdrtoken_string_to_wks_sv (" pnm" );
164+ URL_SCHEME_RTSP = hdrtoken_string_to_wks_sv (" rtsp" );
165+ URL_SCHEME_RTSPU = hdrtoken_string_to_wks_sv (" rtspu" );
166+ URL_SCHEME_MMS = hdrtoken_string_to_wks_sv (" mms" );
167+ URL_SCHEME_MMSU = hdrtoken_string_to_wks_sv (" mmsu" );
168+ URL_SCHEME_MMST = hdrtoken_string_to_wks_sv (" mmst" );
165169
166170 ink_assert (URL_SCHEME_FILE.c_str () && URL_SCHEME_FTP.c_str () && URL_SCHEME_GOPHER.c_str () && URL_SCHEME_HTTP.c_str () &&
167- URL_SCHEME_HTTPS.c_str () && URL_SCHEME_WS.c_str () && URL_SCHEME_WSS.c_str () && URL_SCHEME_MAILTO.c_str () &&
168- URL_SCHEME_NEWS.c_str () && URL_SCHEME_NNTP.c_str () && URL_SCHEME_PROSPERO.c_str () && URL_SCHEME_TELNET.c_str () &&
169- URL_SCHEME_TUNNEL.c_str () && URL_SCHEME_WAIS.c_str () && URL_SCHEME_PNM.c_str () && URL_SCHEME_RTSP.c_str () &&
170- URL_SCHEME_RTSPU.c_str () && URL_SCHEME_MMS.c_str () && URL_SCHEME_MMSU.c_str () && URL_SCHEME_MMST.c_str ());
171+ URL_SCHEME_HTTP_UDS.c_str () && URL_SCHEME_HTTPS.c_str () && URL_SCHEME_HTTPS_UDS.c_str () && URL_SCHEME_WS.c_str () &&
172+ URL_SCHEME_WSS.c_str () && URL_SCHEME_MAILTO.c_str () && URL_SCHEME_NEWS.c_str () && URL_SCHEME_NNTP.c_str () &&
173+ URL_SCHEME_PROSPERO.c_str () && URL_SCHEME_TELNET.c_str () && URL_SCHEME_TUNNEL.c_str () && URL_SCHEME_WAIS.c_str () &&
174+ URL_SCHEME_PNM.c_str () && URL_SCHEME_RTSP.c_str () && URL_SCHEME_RTSPU.c_str () && URL_SCHEME_MMS.c_str () &&
175+ URL_SCHEME_MMSU.c_str () && URL_SCHEME_MMST.c_str ());
171176
172177 URL_WKSIDX_FILE = hdrtoken_wks_to_index (URL_SCHEME_FILE.c_str ());
173178 URL_WKSIDX_FTP = hdrtoken_wks_to_index (URL_SCHEME_FTP.c_str ());
@@ -398,7 +403,15 @@ URLImpl::set_scheme(HdrHeap *heap, std::string_view value, int scheme_wks_idx, b
398403 scheme_wks = nullptr ;
399404 }
400405
401- if (scheme_wks == URL_SCHEME_HTTP.c_str () || scheme_wks == URL_SCHEME_WS.c_str ()) {
406+ if (scheme_wks == nullptr ) {
407+ if (value == static_cast <std::string_view>(URL_SCHEME_HTTP_UDS)) {
408+ this ->m_url_type = URLType::HTTP;
409+ } else if (value == static_cast <std::string_view>(URL_SCHEME_HTTPS_UDS)) {
410+ this ->m_url_type = URLType::HTTPS;
411+ } else {
412+ this ->m_url_type = URLType::HTTP;
413+ }
414+ } else if (scheme_wks == URL_SCHEME_HTTP.c_str () || scheme_wks == URL_SCHEME_WS.c_str ()) {
402415 this ->m_url_type = URLType::HTTP;
403416 } else if (scheme_wks == URL_SCHEME_HTTPS.c_str () || scheme_wks == URL_SCHEME_WSS.c_str ()) {
404417 this ->m_url_type = URLType::HTTPS;
0 commit comments