aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Yang Gao <yangg@google.com>2015-02-20 09:52:36 -0800
committerGravatar Yang Gao <yangg@google.com>2015-02-20 09:52:36 -0800
commit87e8b6df45e12e55e237311ff44dc4d68ec137fd (patch)
tree0897c7abf11870b319cc179856837d8abcd3a7fb
parent1b2f9020754a02f96d80fad7e23d46f9104df9b9 (diff)
parentd9e6413f33dbf9865a69acd146bae7d6cbaeec52 (diff)
Merge pull request #651 from ctiller/interop
Fix server side large message receiving
-rw-r--r--src/core/surface/call.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/core/surface/call.c b/src/core/surface/call.c
index 40caa93868..7cf3c0e4fd 100644
--- a/src/core/surface/call.c
+++ b/src/core/surface/call.c
@@ -360,8 +360,7 @@ static void unlock(grpc_call *call) {
int num_completed_requests = call->num_completed_requests;
int need_more_data =
call->need_more_data &&
- !call->sending &&
- call->write_state >= WRITE_STATE_STARTED;
+ (call->write_state >= WRITE_STATE_STARTED || !call->is_client);
int i;
if (need_more_data) {
@@ -536,14 +535,16 @@ static void finish_finish_step(void *pc, grpc_op_error error) {
}
static void finish_start_step(void *pc, grpc_op_error error) {
- finish_send_op(pc, GRPC_IOREQ_SEND_INITIAL_METADATA, WRITE_STATE_STARTED, error);
+ finish_send_op(pc, GRPC_IOREQ_SEND_INITIAL_METADATA, WRITE_STATE_STARTED,
+ error);
}
static send_action choose_send_action(grpc_call *call) {
switch (call->write_state) {
case WRITE_STATE_INITIAL:
if (is_op_live(call, GRPC_IOREQ_SEND_INITIAL_METADATA)) {
- if (is_op_live(call, GRPC_IOREQ_SEND_MESSAGE) || is_op_live(call, GRPC_IOREQ_SEND_CLOSE)) {
+ if (is_op_live(call, GRPC_IOREQ_SEND_MESSAGE) ||
+ is_op_live(call, GRPC_IOREQ_SEND_CLOSE)) {
return SEND_BUFFERED_INITIAL_METADATA;
} else {
return SEND_INITIAL_METADATA;