Automated g4 rollback of changelist 81719124.

*** Reason for rollback ***

Breaks interop tests

*** Original change description ***

Advertise h2-16, h2-15, h2-14, and accept any of them.

***
	Change on 2014/12/09 by ctiller <ctiller@google.com>
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=81723283
diff --git a/src/core/security/security_context.c b/src/core/security/security_context.c
index 174d991..c56692a 100644
--- a/src/core/security/security_context.c
+++ b/src/core/security/security_context.c
@@ -322,29 +322,19 @@
 grpc_security_status grpc_ssl_channel_security_context_create(
     grpc_credentials *request_metadata_creds, const grpc_ssl_config *config,
     const char *secure_peer_name, grpc_channel_security_context **ctx) {
-  size_t num_alpn_protocols = grpc_chttp2_num_alpn_versions();
-  const unsigned char **alpn_protocol_strings =
-      gpr_malloc(sizeof(const char *) * num_alpn_protocols);
-  unsigned char *alpn_protocol_string_lengths =
-      gpr_malloc(sizeof(unsigned char) * num_alpn_protocols);
+  const char *alpn_protocol_string = GRPC_CHTTP2_ALPN_VERSION;
+  unsigned char alpn_protocol_string_len =
+      (unsigned char)strlen(alpn_protocol_string);
   tsi_result result = TSI_OK;
   grpc_ssl_channel_security_context *c;
-  size_t i;
-
-  for (i = 0; i < num_alpn_protocols; i++) {
-    alpn_protocol_strings[i] =
-        (const unsigned char *)grpc_chttp2_get_alpn_version_index(i);
-    alpn_protocol_string_lengths[i] =
-        strlen(grpc_chttp2_get_alpn_version_index(i));
-  }
 
   if (config == NULL || secure_peer_name == NULL ||
       config->pem_root_certs == NULL) {
     gpr_log(GPR_ERROR, "An ssl channel needs a secure name and root certs.");
-    goto error;
+    return GRPC_SECURITY_ERROR;
   }
   if (!check_request_metadata_creds(request_metadata_creds)) {
-    goto error;
+    return GRPC_SECURITY_ERROR;
   }
 
   c = gpr_malloc(sizeof(grpc_ssl_channel_security_context));
@@ -361,48 +351,31 @@
       config->pem_private_key, config->pem_private_key_size,
       config->pem_cert_chain, config->pem_cert_chain_size,
       config->pem_root_certs, config->pem_root_certs_size,
-      GRPC_SSL_CIPHER_SUITES, alpn_protocol_strings,
-      alpn_protocol_string_lengths, 1, &c->handshaker_factory);
+      GRPC_SSL_CIPHER_SUITES, (const unsigned char **)&alpn_protocol_string,
+      &alpn_protocol_string_len, 1, &c->handshaker_factory);
   if (result != TSI_OK) {
     gpr_log(GPR_ERROR, "Handshaker factory creation failed with %s.",
             tsi_result_to_string(result));
     ssl_channel_destroy(&c->base.base);
     *ctx = NULL;
-    goto error;
+    return GRPC_SECURITY_ERROR;
   }
   *ctx = &c->base;
-  gpr_free(alpn_protocol_strings);
-  gpr_free(alpn_protocol_string_lengths);
   return GRPC_SECURITY_OK;
-
-error:
-  gpr_free(alpn_protocol_strings);
-  gpr_free(alpn_protocol_string_lengths);
-  return GRPC_SECURITY_ERROR;
 }
 
 grpc_security_status grpc_ssl_server_security_context_create(
     const grpc_ssl_config *config, grpc_security_context **ctx) {
-  size_t num_alpn_protocols = grpc_chttp2_num_alpn_versions();
-  const unsigned char **alpn_protocol_strings =
-      gpr_malloc(sizeof(const char *) * num_alpn_protocols);
-  unsigned char *alpn_protocol_string_lengths =
-      gpr_malloc(sizeof(unsigned char) * num_alpn_protocols);
+  const char *alpn_protocol_string = GRPC_CHTTP2_ALPN_VERSION;
+  unsigned char alpn_protocol_string_len =
+      (unsigned char)strlen(alpn_protocol_string);
   tsi_result result = TSI_OK;
   grpc_ssl_server_security_context *c;
-  size_t i;
-
-  for (i = 0; i < num_alpn_protocols; i++) {
-    alpn_protocol_strings[i] =
-        (const unsigned char *)grpc_chttp2_get_alpn_version_index(i);
-    alpn_protocol_string_lengths[i] =
-        strlen(grpc_chttp2_get_alpn_version_index(i));
-  }
 
   if (config == NULL || config->pem_private_key == NULL ||
       config->pem_cert_chain == NULL) {
     gpr_log(GPR_ERROR, "An SSL server needs a key and a cert.");
-    goto error;
+    return GRPC_SECURITY_ERROR;
   }
   c = gpr_malloc(sizeof(grpc_ssl_server_security_context));
   memset(c, 0, sizeof(grpc_ssl_server_security_context));
@@ -415,24 +388,17 @@
       (const unsigned char **)&config->pem_cert_chain,
       (const gpr_uint32 *)&config->pem_cert_chain_size, 1,
       config->pem_root_certs, config->pem_root_certs_size,
-      GRPC_SSL_CIPHER_SUITES, alpn_protocol_strings,
-      alpn_protocol_string_lengths, 1, &c->handshaker_factory);
+      GRPC_SSL_CIPHER_SUITES, (const unsigned char **)&alpn_protocol_string,
+      &alpn_protocol_string_len, 1, &c->handshaker_factory);
   if (result != TSI_OK) {
     gpr_log(GPR_ERROR, "Handshaker factory creation failed with %s.",
             tsi_result_to_string(result));
     ssl_server_destroy(&c->base);
     *ctx = NULL;
-    goto error;
+    return GRPC_SECURITY_ERROR;
   }
   *ctx = &c->base;
-  gpr_free(alpn_protocol_strings);
-  gpr_free(alpn_protocol_string_lengths);
   return GRPC_SECURITY_OK;
-
-error:
-  gpr_free(alpn_protocol_strings);
-  gpr_free(alpn_protocol_string_lengths);
-  return GRPC_SECURITY_ERROR;
 }
 
 
diff --git a/src/core/transport/chttp2/alpn.c b/src/core/transport/chttp2/alpn.c
index 8107406..cd9cf67 100644
--- a/src/core/transport/chttp2/alpn.c
+++ b/src/core/transport/chttp2/alpn.c
@@ -32,25 +32,14 @@
  */
 
 #include "src/core/transport/chttp2/alpn.h"
-#include <grpc/support/log.h>
-#include <grpc/support/useful.h>
 
-/* in order of preference */
-static const char *const supported_versions[] = {"h2-16", "h2-15", "h2-14"};
+static const char *const supported_versions[] = {GRPC_CHTTP2_ALPN_VERSION,
+                                                 "h2-15", "h2-14"};
 
 int grpc_chttp2_is_alpn_version_supported(const char *version, size_t size) {
   size_t i;
-  for (i = 0; i < GPR_ARRAY_SIZE(supported_versions); i++) {
+  for (i = 0; i < sizeof(supported_versions) / sizeof(const char *); i++) {
     if (!strncmp(version, supported_versions[i], size)) return 1;
   }
   return 0;
 }
-
-size_t grpc_chttp2_num_alpn_versions() {
-  return GPR_ARRAY_SIZE(supported_versions);
-}
-
-const char *grpc_chttp2_get_alpn_version_index(size_t i) {
-  GPR_ASSERT(i < GPR_ARRAY_SIZE(supported_versions));
-  return supported_versions[i];
-}
diff --git a/src/core/transport/chttp2/alpn.h b/src/core/transport/chttp2/alpn.h
index de4da8f..1353a18 100644
--- a/src/core/transport/chttp2/alpn.h
+++ b/src/core/transport/chttp2/alpn.h
@@ -36,14 +36,9 @@
 
 #include <string.h>
 
+#define GRPC_CHTTP2_ALPN_VERSION "h2-15"
+
 /* Retuns 1 if the version is supported, 0 otherwise. */
 int grpc_chttp2_is_alpn_version_supported(const char *version, size_t size);
 
-/* Returns the number of protocol versions to advertise */
-size_t grpc_chttp2_num_alpn_versions();
-
-/* Returns the protocol version at index i (0 <= i <
- * grpc_chttp2_num_alpn_versions()) */
-const char *grpc_chttp2_get_alpn_version_index(size_t i);
-
 #endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_ALPN_H_ */
diff --git a/test/core/transport/chttp2/alpn_test.c b/test/core/transport/chttp2/alpn_test.c
index 7a70b0c..65b7af8 100644
--- a/test/core/transport/chttp2/alpn_test.c
+++ b/test/core/transport/chttp2/alpn_test.c
@@ -37,7 +37,8 @@
 #include "test/core/util/test_config.h"
 
 static void test_alpn_success(void) {
-  GPR_ASSERT(grpc_chttp2_is_alpn_version_supported("h2-16", 5));
+  const char *version = GRPC_CHTTP2_ALPN_VERSION;
+  GPR_ASSERT(grpc_chttp2_is_alpn_version_supported(version, strlen(version)));
   GPR_ASSERT(grpc_chttp2_is_alpn_version_supported("h2-15", 5));
   GPR_ASSERT(grpc_chttp2_is_alpn_version_supported("h2-14", 5));
 }