[tbb-commits] [tor-browser/tor-browser-60.1.0esr-8.0-1] Bug 1459420 - HLS Player doesn't use the centralized Proxy Selector r=mcomella GeckoHlsPlayer uses the default http ExoPlayer handler, called DefaultHttpDataSource. It uses URL::openConnection instead of the Firefox ProxySelector.

gk at torproject.org gk at torproject.org
Mon Jul 30 11:49:58 UTC 2018


commit 7aeef47671133760672f881b38117cb4070f32b3
Author: Igor Oliveira <igt0 at torproject.org>
Date:   Mon Jun 4 05:15:00 2018 +0300

    Bug 1459420 - HLS Player doesn't use the centralized Proxy Selector r=mcomella GeckoHlsPlayer uses the default http ExoPlayer handler, called DefaultHttpDataSource. It uses URL::openConnection instead of the Firefox ProxySelector.
    
    This patch updates the ExoPlayer DefaultHttpDataSource to use the
    ProxySelector.
---
 .../exoplayer2/upstream/DefaultHttpDataSource.java      | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/mobile/android/geckoview/src/thirdparty/java/com/google/android/exoplayer2/upstream/DefaultHttpDataSource.java b/mobile/android/geckoview/src/thirdparty/java/com/google/android/exoplayer2/upstream/DefaultHttpDataSource.java
index 599cdddeb91f..75e1f675c5eb 100644
--- a/mobile/android/geckoview/src/thirdparty/java/com/google/android/exoplayer2/upstream/DefaultHttpDataSource.java
+++ b/mobile/android/geckoview/src/thirdparty/java/com/google/android/exoplayer2/upstream/DefaultHttpDataSource.java
@@ -31,6 +31,7 @@ import java.lang.reflect.Method;
 import java.net.HttpURLConnection;
 import java.net.NoRouteToHostException;
 import java.net.ProtocolException;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.List;
 import java.util.Map;
@@ -38,6 +39,8 @@ import java.util.concurrent.atomic.AtomicReference;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.mozilla.gecko.util.ProxySelector;
+
 /**
  * An {@link HttpDataSource} that uses Android's {@link HttpURLConnection}.
  * <p>
@@ -193,6 +196,8 @@ public class DefaultHttpDataSource implements HttpDataSource {
     } catch (IOException e) {
       throw new HttpDataSourceException("Unable to connect to " + dataSpec.uri.toString(), e,
           dataSpec, HttpDataSourceException.TYPE_OPEN);
+    } catch (URISyntaxException e) {
+      throw new HttpDataSourceException("URI invalid: " + dataSpec.uri.toString(), dataSpec, HttpDataSourceException.TYPE_OPEN);
     }
 
     int responseCode;
@@ -337,7 +342,7 @@ public class DefaultHttpDataSource implements HttpDataSource {
   /**
    * Establishes a connection, following redirects to do so where permitted.
    */
-  private HttpURLConnection makeConnection(DataSpec dataSpec) throws IOException {
+  private HttpURLConnection makeConnection(DataSpec dataSpec) throws IOException, URISyntaxException {
     URL url = new URL(dataSpec.uri.toString());
     byte[] postBody = dataSpec.postBody;
     long position = dataSpec.position;
@@ -389,8 +394,14 @@ public class DefaultHttpDataSource implements HttpDataSource {
    * @param followRedirects Whether to follow redirects.
    */
   private HttpURLConnection makeConnection(URL url, byte[] postBody, long position,
-      long length, boolean allowGzip, boolean followRedirects) throws IOException {
-    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+      long length, boolean allowGzip, boolean followRedirects) throws IOException, URISyntaxException {
+    /**
+     * Tor Project modified the way the connection object was created. For the sake of
+     * simplicity, instead of duplicating the whole file we changed the connection object
+     * to use the ProxySelector.
+     */
+    HttpURLConnection connection = (HttpURLConnection) ProxySelector.openConnectionWithProxy(url.toURI());
+
     connection.setConnectTimeout(connectTimeoutMillis);
     connection.setReadTimeout(readTimeoutMillis);
     if (defaultRequestProperties != null) {





More information about the tbb-commits mailing list