Cherry picking changes from dalvik-dev

git cherry-pick --no-commit 5648c97be2c515bdafeff3d8a4b07ea0ddc3e357
git cherry-pick --no-commit ffdb1757
git cherry-pick --no-commit 9340bb2a4b5f828b418c0e77492dde148623c938
git cherry-pick --no-commit af5c56d1

Change-Id: Ie910601ca27e1fcff90bbf0db5bd522bab8924f7
diff --git a/src/org/apache/http/conn/ssl/AbstractVerifier.java b/src/org/apache/http/conn/ssl/AbstractVerifier.java
index 5195e58..e409db9 100644
--- a/src/org/apache/http/conn/ssl/AbstractVerifier.java
+++ b/src/org/apache/http/conn/ssl/AbstractVerifier.java
@@ -89,44 +89,7 @@
             throw new NullPointerException("host to verify is null");
         }
 
-        ssl.startHandshake();
         SSLSession session = ssl.getSession();
-        if(session == null) {
-            // In our experience this only happens under IBM 1.4.x when
-            // spurious (unrelated) certificates show up in the server'
-            // chain.  Hopefully this will unearth the real problem:
-            InputStream in = ssl.getInputStream();
-            in.available();
-            /*
-              If you're looking at the 2 lines of code above because
-              you're running into a problem, you probably have two
-              options:
-
-                #1.  Clean up the certificate chain that your server
-                     is presenting (e.g. edit "/etc/apache2/server.crt"
-                     or wherever it is your server's certificate chain
-                     is defined).
-
-                                           OR
-
-                #2.   Upgrade to an IBM 1.5.x or greater JVM, or switch
-                      to a non-IBM JVM.
-            */
-
-            // If ssl.getInputStream().available() didn't cause an
-            // exception, maybe at least now the session is available?
-            session = ssl.getSession();
-            if(session == null) {
-                // If it's still null, probably a startHandshake() will
-                // unearth the real problem.
-                ssl.startHandshake();
-
-                // Okay, if we still haven't managed to cause an exception,
-                // might as well go for the NPE.  Or maybe we're okay now?
-                session = ssl.getSession();
-            }
-        }
-
         Certificate[] certs = session.getPeerCertificates();
         X509Certificate x509 = (X509Certificate) certs[0];
         verify(host, x509);
diff --git a/src/org/apache/http/impl/client/DefaultHttpClient.java b/src/org/apache/http/impl/client/DefaultHttpClient.java
index f0b694e..7dcb2a2 100644
--- a/src/org/apache/http/impl/client/DefaultHttpClient.java
+++ b/src/org/apache/http/impl/client/DefaultHttpClient.java
@@ -131,8 +131,15 @@
                 HttpVersion.HTTP_1_1);
         HttpProtocolParams.setContentCharset(params, 
                 HTTP.DEFAULT_CONTENT_CHARSET);
+
+        /*
+         * Android note: Send each request body without first asking the server
+         * whether it will be accepted. Asking first slows down the common case
+         * and results in "417 expectation failed" errors when a HTTP/1.0 server
+         * is behind a proxy. http://b/2471595
+         */
         HttpProtocolParams.setUseExpectContinue(params, 
-                true);
+                false); // android-changed
 
         // determine the release version from packaged version info
         final VersionInfo vi = VersionInfo.loadVersionInfo
diff --git a/src/org/apache/http/impl/conn/DefaultClientConnectionOperator.java b/src/org/apache/http/impl/conn/DefaultClientConnectionOperator.java
index 67e6bb0..fbc762d 100644
--- a/src/org/apache/http/impl/conn/DefaultClientConnectionOperator.java
+++ b/src/org/apache/http/impl/conn/DefaultClientConnectionOperator.java
@@ -223,7 +223,7 @@
         final Socket sock; 
         try {
             sock = lsf.createSocket
-                (conn.getSocket(), target.getHostName(), target.getPort(), true);
+                (conn.getSocket(), target.getHostName(), schm.resolvePort(target.getPort()), true);
         } catch (ConnectException ex) {
             throw new HttpHostConnectException(target, ex);
         }
diff --git a/src/org/apache/http/params/CoreProtocolPNames.java b/src/org/apache/http/params/CoreProtocolPNames.java
index a42c5de..a0a726d 100644
--- a/src/org/apache/http/params/CoreProtocolPNames.java
+++ b/src/org/apache/http/params/CoreProtocolPNames.java
@@ -94,8 +94,8 @@
 
     /**
      * <p>
-     * Activates 'Expect: 100-Continue' handshake for the 
-     * entity enclosing methods. The purpose of the 'Expect: 100-Continue'
+     * Activates 'Expect: 100-continue' handshake for the
+     * entity enclosing methods. The purpose of the 'Expect: 100-continue'
      * handshake to allow a client that is sending a request message with 
      * a request body to determine if the origin server is willing to 
      * accept the request (based on the request headers) before the client
diff --git a/src/org/apache/http/protocol/HTTP.java b/src/org/apache/http/protocol/HTTP.java
index de76ca6..9223955 100644
--- a/src/org/apache/http/protocol/HTTP.java
+++ b/src/org/apache/http/protocol/HTTP.java
@@ -60,7 +60,7 @@
     public static final String SERVER_HEADER = "Server";
     
     /** HTTP expectations */
-    public static final String EXPECT_CONTINUE = "100-Continue";
+    public static final String EXPECT_CONTINUE = "100-continue";
 
     /** HTTP connection control */
     public static final String CONN_CLOSE = "Close";