Selaa lähdekoodia

Properly document the issues with MOZ proxy return values. #1062.

FelisCatus 8 vuotta sitten
vanhempi
sitoutus
d2d9d69eb6
1 muutettua tiedostoa jossa 13 lisäystä ja 4 poistoa
  1. 13 4
      omega-target-chromium-extension/omega_webext_proxy_script.js

+ 13 - 4
omega-target-chromium-extension/omega_webext_proxy_script.js

@@ -40,11 +40,20 @@ FindProxyForURL = (function () {
         // MOZ: Mozilla has a bug tracked for user/pass in PAC return value.
         // MOZ: Mozilla has a bug tracked for user/pass in PAC return value.
         // https://bugzilla.mozilla.org/show_bug.cgi?id=1319641
         // https://bugzilla.mozilla.org/show_bug.cgi?id=1319641
         if (next.charCodeAt(0) !== 43) {
         if (next.charCodeAt(0) !== 43) {
-          // MOZ: HTTPS proxies are supported under the prefix PROXY.
           // MOZ: SOCKS5 proxies are supported under the prefix SOCKS.
           // MOZ: SOCKS5 proxies are supported under the prefix SOCKS.
-          // https://dxr.mozilla.org/mozilla-central/source/toolkit/components/extensions/ProxyScriptContext.jsm#180
-          return next.replace(/HTTPS /g, 'PROXY ')
-            .replace(/SOCKS5 /g, 'SOCKS ');
+          // https://dxr.mozilla.org/mozilla-central/source/toolkit/components/extensions/ProxyScriptContext.jsm#178
+          // Note: We have to replace this because MOZ won't process the rest of
+          //       the list if the syntax of the first item is not recognized.
+          next = next.replace(/SOCKS5 /g, 'SOCKS ');
+
+          // MOZ: HTTP proxies are wrongly treated as HTTPS proxies!
+          //      There is no workaround now. Therefore, they won't work.
+          // MOZ: HTTPS proxies are (wrongly) supported under the prefix PROXY.
+          // XXX: Remove the following hack once they are properly supported.
+          // https://bugzilla.mozilla.org/show_bug.cgi?id=1359417
+          next = next.replace(/HTTPS /g, 'PROXY ');
+
+          return next;
         }
         }
       } else if (matchResult.profileName) {
       } else if (matchResult.profileName) {
         next = OmegaPac.Profiles.nameAsKey(matchResult.profileName)
         next = OmegaPac.Profiles.nameAsKey(matchResult.profileName)