aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--doc/workarounds.md20
-rw-r--r--include/grpc++/server_builder.h2
-rw-r--r--include/grpc/support/workaround_list.h2
3 files changed, 22 insertions, 2 deletions
diff --git a/doc/workarounds.md b/doc/workarounds.md
new file mode 100644
index 0000000000..4dd1a2c83c
--- /dev/null
+++ b/doc/workarounds.md
@@ -0,0 +1,20 @@
+# gRPC Server Backward Compatibility Issues and Workarounds Manageent
+
+## Introduction
+This document lists the workarounds implemented on gRPC servers for record and reference when users need to enable a certain workaround.
+
+## Workaround Lists
+
+| Workaround ID | Date added | Issue | Workaround Description | Status |
+|-------------------------------------|--------------|---------------------------------------------------|------------------------------------------------------|--------------------------|
+| WORKAROUND\_ID\_CRONET\_COMPRESSION | May 06, 2017 | Before version v1.3.0-dev, gRPC iOS client's | Implemented as a server channel filter in C core. | Implemented in C and C++ |
+| | | Cronet transport did not implement compression. | The filter identifies the version of peer client | |
+| | | However the clients still claim to support | with incoming `user-agent` header of each call. If | |
+| | | compression. As a result, a client fails to parse | the client's gRPC version is lower that or equal to | |
+| | | received message when the message is compressed. | v1.3.x, a flag GRPC\_WRITE\_NO\_COMPRESS is marked | |
+| | | | for all send\_message ops which prevents compression | |
+| | | The problem above was resolved in gRPC v1.3.0-dev.| of the messages to be sent out. | |
+| | | For backward compatibility, a server must | | |
+| | | forcingly disable compression for gRPC clients of | | |
+| | | version lower than or equal to v1.3.0-dev. | | |
+
diff --git a/include/grpc++/server_builder.h b/include/grpc++/server_builder.h
index 2dcd0701a2..3c989c041d 100644
--- a/include/grpc++/server_builder.h
+++ b/include/grpc++/server_builder.h
@@ -186,7 +186,7 @@ class ServerBuilder {
/// Enable a server workaround. Do not use unless you know what the workaround
/// does. For explanation and detailed descriptions of workarounds, see
- /// docs/workarounds.md.
+ /// doc/workarounds.md.
ServerBuilder& EnableWorkaround(uint32_t id);
private:
diff --git a/include/grpc/support/workaround_list.h b/include/grpc/support/workaround_list.h
index 6a8aa1f955..ec4766510f 100644
--- a/include/grpc/support/workaround_list.h
+++ b/include/grpc/support/workaround_list.h
@@ -36,7 +36,7 @@
/* The list of IDs of server workarounds currently maintained by gRPC. For
* explanation and detailed descriptions of workarounds, see
- * /docs/workarounds.md
+ * /doc/workarounds.md
*/
typedef enum {
GRPC_WORKAROUND_ID_CRONET_COMPRESSION = 0,