diff --git a/doc/workarounds.md b/doc/workarounds.md new file mode 100644 index 00000000000..4dd1a2c83c5 --- /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 2dcd0701a2b..3c989c041dd 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 6a8aa1f9550..ec4766510f3 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,