diff options
author | Craig Tiller <ctiller@google.com> | 2015-02-04 12:50:06 -0800 |
---|---|---|
committer | Craig Tiller <ctiller@google.com> | 2015-02-04 12:50:06 -0800 |
commit | e2b2b1fb676eef687f0ea088aa74a13b52cbf755 (patch) | |
tree | 3ae877d92a3b9311d8e0c182f33b606894328927 /src | |
parent | c12fee6a04c44f99480c6f56f7c0ca263629ca46 (diff) |
Fix check for whether we should write to prevent infinite loop
Diffstat (limited to 'src')
-rw-r--r-- | src/core/surface/call.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/core/surface/call.c b/src/core/surface/call.c index 382909c865..561c24e547 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -445,17 +445,16 @@ static void finish_start_step(void *pc, grpc_op_error error) { static send_action choose_send_action(grpc_call *call) { switch (call->write_state) { case WRITE_STATE_INITIAL: - if (call->request_set[GRPC_IOREQ_SEND_INITIAL_METADATA] != - REQSET_EMPTY) { + if (is_op_live(call, GRPC_IOREQ_SEND_INITIAL_METADATA)) { call->write_state = WRITE_STATE_STARTED; return SEND_INITIAL_METADATA; } return SEND_NOTHING; case WRITE_STATE_STARTED: - if (call->request_set[GRPC_IOREQ_SEND_MESSAGE] != REQSET_EMPTY) { + if (is_op_live(call, GRPC_IOREQ_SEND_MESSAGE)) { return SEND_MESSAGE; } - if (call->request_set[GRPC_IOREQ_SEND_CLOSE] != REQSET_EMPTY) { + if (is_op_live(call, GRPC_IOREQ_SEND_CLOSE)) { call->write_state = WRITE_STATE_WRITE_CLOSED; finish_ioreq_op(call, GRPC_IOREQ_SEND_TRAILING_METADATA, GRPC_OP_OK); finish_ioreq_op(call, GRPC_IOREQ_SEND_STATUS, GRPC_OP_OK); |