The first step of server-side crypto handshake: handle ClientHello,
negotiate parameters, and respond with ServerHello. Still incomplete.

Add the CloseConnectionWithDetails and SendConnectionCloseWithDetails
methods to allow specifying an error details string.

Merge internal CL: 41642399

[email protected]
BUG=none
TEST=none

Review URL: https://chromiumcodereview.appspot.com/12078004

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@179519 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/net/quic/quic_protocol.h b/net/quic/quic_protocol.h
index 83f4ae8..9d641ee 100644
--- a/net/quic/quic_protocol.h
+++ b/net/quic/quic_protocol.h
@@ -191,9 +191,15 @@
   QUIC_CRYPTO_INVALID_VALUE_LENGTH,
   // A crypto message was received after the handshake was complete.
   QUIC_CRYPTO_MESSAGE_AFTER_HANDSHAKE_COMPLETE,
-  // A crypto message was receieved with an illegal message tag.
+  // A crypto message was received with an illegal message tag.
   QUIC_INVALID_CRYPTO_MESSAGE_TYPE,
-
+  // A crypto message was received with an illegal parameter.
+  QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER,
+  // A crypto message was received with a mandatory parameter missing.
+  QUIC_CRYPTO_MESSAGE_PARAMETER_NOT_FOUND,
+  // A crypto message was received with a parameter that has no overlap
+  // with the local parameter.
+  QUIC_CRYPTO_MESSAGE_PARAMETER_NO_OVERLAP,
 };
 
 struct NET_EXPORT_PRIVATE QuicPacketPublicHeader {
@@ -359,8 +365,8 @@
 
 struct NET_EXPORT_PRIVATE QuicConnectionCloseFrame {
   QuicErrorCode error_code;
-  QuicAckFrame ack_frame;
   std::string error_details;
+  QuicAckFrame ack_frame;
 };
 
 struct NET_EXPORT_PRIVATE QuicFrame {