Set the right default max message sizes.

Also use single-line comment style throughout the new files.
pull/7846/head
Mark D. Roth 9 years ago
parent 370ef8941e
commit a6f1b98f2c
  1. 69
      src/core/lib/channel/message_size_filter.c
  2. 63
      src/core/lib/channel/message_size_filter.h

@ -1,34 +1,33 @@
/* //
* Copyright 2016, Google Inc. // Copyright 2016, Google Inc.
* All rights reserved. // All rights reserved.
* //
* Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
* met: // met:
* //
* * Redistributions of source code must retain the above copyright // * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. // notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above // * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer // copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the // in the documentation and/or other materials provided with the
* distribution. // distribution.
* * Neither the name of Google Inc. nor the names of its // * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from // contributors may be used to endorse or promote products derived from
* this software without specific prior written permission. // this software without specific prior written permission.
* //
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* //
*/
#include "src/core/lib/channel/message_size_filter.h" #include "src/core/lib/channel/message_size_filter.h"
@ -38,7 +37,7 @@
#include <grpc/support/log.h> #include <grpc/support/log.h>
#include <grpc/support/string_util.h> #include <grpc/support/string_util.h>
/* the protobuf library will (by default) start warning at 100megs */ // The protobuf library will (by default) start warning at 100 megs.
#define DEFAULT_MAX_MESSAGE_LENGTH (4 * 1024 * 1024) #define DEFAULT_MAX_MESSAGE_LENGTH (4 * 1024 * 1024)
typedef struct call_data { typedef struct call_data {
@ -85,7 +84,7 @@ static void start_transport_stream_op(grpc_exec_ctx* exec_ctx,
call_data* calld = elem->call_data; call_data* calld = elem->call_data;
channel_data* chand = elem->channel_data; channel_data* chand = elem->channel_data;
// Check max send message size. // Check max send message size.
if (op->send_message != NULL && chand->max_send_size > 0 && if (op->send_message != NULL &&
op->send_message->length > chand->max_send_size) { op->send_message->length > chand->max_send_size) {
char* message_string; char* message_string;
gpr_asprintf(&message_string, "Sent message larger than max (%lu)", gpr_asprintf(&message_string, "Sent message larger than max (%lu)",
@ -96,7 +95,7 @@ static void start_transport_stream_op(grpc_exec_ctx* exec_ctx,
exec_ctx, elem, GRPC_STATUS_INVALID_ARGUMENT, &message); exec_ctx, elem, GRPC_STATUS_INVALID_ARGUMENT, &message);
} }
// Inject callback for receiving a message. // Inject callback for receiving a message.
if (op->recv_message_ready != NULL && chand->max_recv_size > 0) { if (op->recv_message_ready != NULL) {
calld->next_recv_message_ready = op->recv_message_ready; calld->next_recv_message_ready = op->recv_message_ready;
calld->recv_message = op->recv_message; calld->recv_message = op->recv_message;
op->recv_message_ready = &calld->recv_message_ready; op->recv_message_ready = &calld->recv_message_ready;
@ -127,6 +126,8 @@ static void init_channel_elem(grpc_exec_ctx* exec_ctx,
GPR_ASSERT(!args->is_last); GPR_ASSERT(!args->is_last);
channel_data* chand = elem->channel_data; channel_data* chand = elem->channel_data;
memset(chand, 0, sizeof(*chand)); memset(chand, 0, sizeof(*chand));
chand->max_send_size = DEFAULT_MAX_MESSAGE_LENGTH;
chand->max_recv_size = DEFAULT_MAX_MESSAGE_LENGTH;
for (size_t i = 0; i < args->channel_args->num_args; ++i) { for (size_t i = 0; i < args->channel_args->num_args; ++i) {
if (strcmp(args->channel_args->args[i].key, if (strcmp(args->channel_args->args[i].key,
GRPC_ARG_MAX_SEND_MESSAGE_LENGTH) == 0) { GRPC_ARG_MAX_SEND_MESSAGE_LENGTH) == 0) {

@ -1,34 +1,33 @@
/* //
* Copyright 2016, Google Inc. // Copyright 2016, Google Inc.
* All rights reserved. // All rights reserved.
* //
* Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
* met: // met:
* //
* * Redistributions of source code must retain the above copyright // * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. // notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above // * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer // copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the // in the documentation and/or other materials provided with the
* distribution. // distribution.
* * Neither the name of Google Inc. nor the names of its // * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from // contributors may be used to endorse or promote products derived from
* this software without specific prior written permission. // this software without specific prior written permission.
* //
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* //
*/
#ifndef GRPC_CORE_LIB_CHANNEL_MESSAGE_SIZE_FILTER_H #ifndef GRPC_CORE_LIB_CHANNEL_MESSAGE_SIZE_FILTER_H
#define GRPC_CORE_LIB_CHANNEL_MESSAGE_SIZE_FILTER_H #define GRPC_CORE_LIB_CHANNEL_MESSAGE_SIZE_FILTER_H
@ -37,4 +36,4 @@
extern const grpc_channel_filter grpc_message_size_filter; extern const grpc_channel_filter grpc_message_size_filter;
#endif /* GRPC_CORE_LIB_CHANNEL_MESSAGE_SIZE_FILTER_H */ #endif // GRPC_CORE_LIB_CHANNEL_MESSAGE_SIZE_FILTER_H

Loading…
Cancel
Save