Loading media/java/android/media/MediaHTTPConnection.java +28 −3 Original line number Diff line number Diff line Loading @@ -34,6 +34,11 @@ import java.net.NoRouteToHostException; import java.util.HashMap; import java.util.Map; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.Socket; import java.net.SocketAddress; import static android.media.MediaPlayer.MEDIA_ERROR_UNSUPPORTED; /** @hide */ Loading @@ -43,6 +48,8 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub { private long mCurrentOffset = -1; private URL mURL = null; private int mProxyPort = 0; private String mProxyIP; private Map<String, String> mHeaders = null; private HttpURLConnection mConnection = null; private long mTotalSize = -1; Loading Loading @@ -92,10 +99,19 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub { /* returns true iff header is internal */ private boolean filterOutInternalHeaders(String key, String val) { Log.d(TAG, "filterOutInternalHeaders: key=" + key + ", val=" + val); if ("android-allow-cross-domain-redirect".equalsIgnoreCase(key)) { mAllowCrossDomainRedirect = parseBoolean(val); // cross-protocol redirects are also controlled by this flag mAllowCrossProtocolRedirect = mAllowCrossDomainRedirect; } else if ("use-proxy".equalsIgnoreCase(key)) { Log.d(TAG, "filterOutInternalHeaders use-proxy " + val); int colonPos = val.indexOf(":"); if (colonPos > 0) { mProxyIP = new String((val.substring(0, colonPos)).trim()); mProxyPort = Integer.parseInt(val.substring(colonPos + 1)); Log.d(TAG, "sta-proxy-ip " + mProxyIP + " port " + mProxyPort); } } else { return false; } Loading Loading @@ -175,11 +191,20 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub { boolean noProxy = isLocalHost(url); while (true) { Log.d(TAG, "proxy " + mProxyIP +" port "+ mProxyPort); if (mProxyPort > 0) { SocketAddress socketAddr = new InetSocketAddress(mProxyIP, mProxyPort); java.net.Proxy proxy = new java.net.Proxy(java.net.Proxy.Type.HTTP, socketAddr); mConnection = (HttpURLConnection) url.openConnection(proxy); Log.d(TAG, "connection initialized with proxy"); } else { if (noProxy) { mConnection = (HttpURLConnection)url.openConnection(Proxy.NO_PROXY); } else { mConnection = (HttpURLConnection)url.openConnection(); } } // handle redirects ourselves if we do not allow cross-domain redirect mConnection.setInstanceFollowRedirects(mAllowCrossDomainRedirect); Loading Loading
media/java/android/media/MediaHTTPConnection.java +28 −3 Original line number Diff line number Diff line Loading @@ -34,6 +34,11 @@ import java.net.NoRouteToHostException; import java.util.HashMap; import java.util.Map; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.Socket; import java.net.SocketAddress; import static android.media.MediaPlayer.MEDIA_ERROR_UNSUPPORTED; /** @hide */ Loading @@ -43,6 +48,8 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub { private long mCurrentOffset = -1; private URL mURL = null; private int mProxyPort = 0; private String mProxyIP; private Map<String, String> mHeaders = null; private HttpURLConnection mConnection = null; private long mTotalSize = -1; Loading Loading @@ -92,10 +99,19 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub { /* returns true iff header is internal */ private boolean filterOutInternalHeaders(String key, String val) { Log.d(TAG, "filterOutInternalHeaders: key=" + key + ", val=" + val); if ("android-allow-cross-domain-redirect".equalsIgnoreCase(key)) { mAllowCrossDomainRedirect = parseBoolean(val); // cross-protocol redirects are also controlled by this flag mAllowCrossProtocolRedirect = mAllowCrossDomainRedirect; } else if ("use-proxy".equalsIgnoreCase(key)) { Log.d(TAG, "filterOutInternalHeaders use-proxy " + val); int colonPos = val.indexOf(":"); if (colonPos > 0) { mProxyIP = new String((val.substring(0, colonPos)).trim()); mProxyPort = Integer.parseInt(val.substring(colonPos + 1)); Log.d(TAG, "sta-proxy-ip " + mProxyIP + " port " + mProxyPort); } } else { return false; } Loading Loading @@ -175,11 +191,20 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub { boolean noProxy = isLocalHost(url); while (true) { Log.d(TAG, "proxy " + mProxyIP +" port "+ mProxyPort); if (mProxyPort > 0) { SocketAddress socketAddr = new InetSocketAddress(mProxyIP, mProxyPort); java.net.Proxy proxy = new java.net.Proxy(java.net.Proxy.Type.HTTP, socketAddr); mConnection = (HttpURLConnection) url.openConnection(proxy); Log.d(TAG, "connection initialized with proxy"); } else { if (noProxy) { mConnection = (HttpURLConnection)url.openConnection(Proxy.NO_PROXY); } else { mConnection = (HttpURLConnection)url.openConnection(); } } // handle redirects ourselves if we do not allow cross-domain redirect mConnection.setInstanceFollowRedirects(mAllowCrossDomainRedirect); Loading