Commit 3d15e14a authored by Matthew Finkel's avatar Matthew Finkel Committed by Alex Catarineu
Browse files

Bug 28125 - Prevent non-Necko network connections

parent 29015fc3
......@@ -488,54 +488,7 @@ public class GeckoMediaDrmBridgeV21 implements GeckoMediaDrm {
@Override
protected Void doInBackground(final Void... params) {
HttpURLConnection urlConnection = null;
BufferedReader in = null;
try {
URI finalURI = new URI(mURL + "&signedRequest=" + URLEncoder.encode(new String(mDrmRequest), "UTF-8"));
urlConnection = (HttpURLConnection) ProxySelector.openConnectionWithProxy(finalURI);
urlConnection.setRequestMethod("POST");
if (DEBUG) Log.d(LOGTAG, "Provisioning, posting url =" + finalURI.toString());
// Add data
urlConnection.setRequestProperty("Accept", "*/*");
urlConnection.setRequestProperty("User-Agent", getCDMUserAgent());
urlConnection.setRequestProperty("Content-Type", "application/json");
// Execute HTTP Post Request
urlConnection.connect();
int responseCode = urlConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), StringUtils.UTF_8));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
mResponseBody = String.valueOf(response).getBytes(StringUtils.UTF_8);
if (DEBUG) Log.d(LOGTAG, "Provisioning, response received.");
if (mResponseBody != null) Log.d(LOGTAG, "response length=" + mResponseBody.length);
} else {
Log.d(LOGTAG, "Provisioning, server returned HTTP error code :" + responseCode);
}
} catch (IOException e) {
Log.e(LOGTAG, "Got exception during posting provisioning request ...", e);
} catch (URISyntaxException e) {
Log.e(LOGTAG, "Got exception during creating uri ...", e);
} finally {
if (urlConnection != null) {
urlConnection.disconnect();
}
try {
if (in != null) {
in.close();
}
} catch (IOException e) {
Log.e(LOGTAG, "Exception during closing in ...", e);
}
}
Log.i(LOGTAG, "This is Tor Browser. Skipping.");
return null;
}
......
......@@ -46,6 +46,7 @@ import java.util.regex.Pattern;
import java.util.zip.GZIPInputStream;
import org.mozilla.gecko.util.ProxySelector;
/**
* An {@link HttpDataSource} that uses Android's {@link HttpURLConnection}.
*
......@@ -516,50 +517,8 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
boolean followRedirects,
Map<String, String> requestParameters)
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);
Map<String, String> requestHeaders = new HashMap<>();
if (defaultRequestProperties != null) {
requestHeaders.putAll(defaultRequestProperties.getSnapshot());
}
requestHeaders.putAll(requestProperties.getSnapshot());
requestHeaders.putAll(requestParameters);
for (Map.Entry<String, String> property : requestHeaders.entrySet()) {
connection.setRequestProperty(property.getKey(), property.getValue());
}
if (!(position == 0 && length == C.LENGTH_UNSET)) {
String rangeRequest = "bytes=" + position + "-";
if (length != C.LENGTH_UNSET) {
rangeRequest += (position + length - 1);
}
connection.setRequestProperty("Range", rangeRequest);
}
connection.setRequestProperty("User-Agent", userAgent);
connection.setRequestProperty("Accept-Encoding", allowGzip ? "gzip" : "identity");
connection.setInstanceFollowRedirects(followRedirects);
connection.setDoOutput(httpBody != null);
connection.setRequestMethod(DataSpec.getStringForHttpMethod(httpMethod));
if (httpBody != null) {
connection.setFixedLengthStreamingMode(httpBody.length);
connection.connect();
OutputStream os = connection.getOutputStream();
os.write(httpBody);
os.close();
} else {
connection.connect();
}
return connection;
Log.i(TAG, "This is Tor Browser. Skipping.");
throw new IOException();
}
/** Creates an {@link HttpURLConnection} that is connected with the {@code url}. */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment