Merge pull request #822 from ctiller/hard

Fix max_concurrent_streams test
diff --git a/INSTALL b/INSTALL
index c12bea0..50040d7 100644
--- a/INSTALL
+++ b/INSTALL
@@ -10,10 +10,10 @@
 *************************
 
  $ git clone https://github.com/grpc/grpc.git
+ $ cd grpc
  $ git submodule update --init
-
-  $ make 
-  $ sudo make install
+ $ make 
+ $ sudo make install
 
 You don't need anything else than GNU Make, gcc and autotools. Under a Debian
 or Ubuntu system, this should boil down to the following packages:
diff --git a/README.md b/README.md
index fc35934..eacb8c0 100644
--- a/README.md
+++ b/README.md
@@ -13,9 +13,9 @@
 of shared C core library [src/core] (src/core).
 
    * C++ source code: [src/cpp] (src/cpp)
-   * Python source code: [src/python] (src/python)
    * Ruby source code: [src/ruby] (src/ruby)
    * NodeJS source code: [src/node] (src/node)
+   * Python source code: [src/python] (src/python)
    * PHP source code: [src/php] (src/php)
    * C# source code: [src/csharp] (src/csharp)
    * Objective-C source code: [src/objective-c] (src/objective-c)
@@ -33,9 +33,9 @@
 
    * shared C core library [src/core] (src/core) : Early adopter ready - Alpha.
    * C++ Library: [src/cpp] (src/cpp) : Early adopter ready - Alpha.
-   * Python Library: [src/python] (src/python) : Early adopter ready - Alpha.
    * Ruby Library: [src/ruby] (src/ruby) : Early adopter ready - Alpha.
    * NodeJS Library: [src/node] (src/node) : Early adopter ready - Alpha.
+   * Python Library: [src/python] (src/python) : Usable with limitations - Pre-Alpha.
    * PHP Library: [src/php] (src/php) : Pre-Alpha.
    * C# Library: [src/csharp] (src/csharp) : Pre-Alpha.
    * Objective-C Library: [src/objective-c] (src/objective-c): Pre-Alpha.
diff --git a/src/python/README.md b/src/python/README.md
index 5a4194b..0ead86b 100755
--- a/src/python/README.md
+++ b/src/python/README.md
@@ -4,6 +4,11 @@
 The Python facility of gRPC.
 
 
+Status
+-------
+
+Usable with limitations, Pre-Alpha
+
 Prerequisites
 -----------------------
 
diff --git a/test/core/end2end/dualstack_socket_test.c b/test/core/end2end/dualstack_socket_test.c
index 62676d0..5e2c80a 100644
--- a/test/core/end2end/dualstack_socket_test.c
+++ b/test/core/end2end/dualstack_socket_test.c
@@ -75,6 +75,10 @@
   gpr_timespec deadline;
   int got_port;
 
+  if (port == 0) {
+    port = grpc_pick_unused_port_or_die();
+  }
+
   gpr_join_host_port(&server_hostport, server_host, port);
 
   /* Create server. */
@@ -179,7 +183,6 @@
 
 int main(int argc, char **argv) {
   int do_ipv6 = 1;
-  int fixed_port;
 
   grpc_test_init(argc, argv);
   grpc_init();
@@ -189,32 +192,28 @@
     do_ipv6 = 0;
   }
 
-  for (fixed_port = 0; fixed_port <= 1; fixed_port++) {
-    int port = fixed_port ? grpc_pick_unused_port_or_die() : 0;
-
     /* For coverage, test with and without dualstack sockets. */
-    for (grpc_forbid_dualstack_sockets_for_testing = 0;
-         grpc_forbid_dualstack_sockets_for_testing <= 1;
-         grpc_forbid_dualstack_sockets_for_testing++) {
-      /* :: and 0.0.0.0 are handled identically. */
-      test_connect("::", "127.0.0.1", port, 1);
-      test_connect("::", "::ffff:127.0.0.1", port, 1);
-      test_connect("::", "localhost", port, 1);
-      test_connect("0.0.0.0", "127.0.0.1", port, 1);
-      test_connect("0.0.0.0", "::ffff:127.0.0.1", port, 1);
-      test_connect("0.0.0.0", "localhost", port, 1);
-      if (do_ipv6) {
-        test_connect("::", "::1", port, 1);
-        test_connect("0.0.0.0", "::1", port, 1);
-      }
+  for (grpc_forbid_dualstack_sockets_for_testing = 0;
+       grpc_forbid_dualstack_sockets_for_testing <= 1;
+       grpc_forbid_dualstack_sockets_for_testing++) {
+    /* :: and 0.0.0.0 are handled identically. */
+    test_connect("::", "127.0.0.1", 0, 1);
+    test_connect("::", "::ffff:127.0.0.1", 0, 1);
+    test_connect("::", "localhost", 0, 1);
+    test_connect("0.0.0.0", "127.0.0.1", 0, 1);
+    test_connect("0.0.0.0", "::ffff:127.0.0.1", 0, 1);
+    test_connect("0.0.0.0", "localhost", 0, 1);
+    if (do_ipv6) {
+      test_connect("::", "::1", 0, 1);
+      test_connect("0.0.0.0", "::1", 0, 1);
+    }
 
-      /* These only work when the families agree. */
-      test_connect("127.0.0.1", "127.0.0.1", port, 1);
-      if (do_ipv6) {
-        test_connect("::1", "::1", port, 1);
-        test_connect("::1", "127.0.0.1", port, 0);
-        test_connect("127.0.0.1", "::1", port, 0);
-      }
+    /* These only work when the families agree. */
+    test_connect("127.0.0.1", "127.0.0.1", 0, 1);
+    if (do_ipv6) {
+      test_connect("::1", "::1", 0, 1);
+      test_connect("::1", "127.0.0.1", 0, 0);
+      test_connect("127.0.0.1", "::1", 0, 0);
     }
   }