Skip to content
Snippets Groups Projects
Commit a9236bc4 authored by Craig Tiller's avatar Craig Tiller Committed by GitHub
Browse files

Merge pull request #10824 from ctiller/proxy2

Fix potential memory leak, cleanup some code
parents ffa74736 1c2332b0
Branches
Tags
Loading
...@@ -277,13 +277,10 @@ static void compress_start_transport_stream_op_batch( ...@@ -277,13 +277,10 @@ static void compress_start_transport_stream_op_batch(
GPR_TIMER_BEGIN("compress_start_transport_stream_op_batch", 0); GPR_TIMER_BEGIN("compress_start_transport_stream_op_batch", 0);
if (op->cancel_stream) { if (op->cancel_stream) {
gpr_atm cur;
GRPC_ERROR_REF(op->payload->cancel_stream.cancel_error); GRPC_ERROR_REF(op->payload->cancel_stream.cancel_error);
do { gpr_atm cur = gpr_atm_full_xchg(
cur = gpr_atm_acq_load(&calld->send_initial_metadata_state); &calld->send_initial_metadata_state,
} while (!gpr_atm_rel_cas( CANCELLED_BIT | (gpr_atm)op->payload->cancel_stream.cancel_error);
&calld->send_initial_metadata_state, cur,
CANCELLED_BIT | (gpr_atm)op->payload->cancel_stream.cancel_error));
switch (cur) { switch (cur) {
case HAS_COMPRESSION_ALGORITHM: case HAS_COMPRESSION_ALGORITHM:
case NO_COMPRESSION_ALGORITHM: case NO_COMPRESSION_ALGORITHM:
...@@ -311,13 +308,18 @@ static void compress_start_transport_stream_op_batch( ...@@ -311,13 +308,18 @@ static void compress_start_transport_stream_op_batch(
grpc_transport_stream_op_batch_finish_with_failure(exec_ctx, op, error); grpc_transport_stream_op_batch_finish_with_failure(exec_ctx, op, error);
return; return;
} }
gpr_atm cur = gpr_atm_acq_load(&calld->send_initial_metadata_state); gpr_atm cur;
retry_send_im:
cur = gpr_atm_acq_load(&calld->send_initial_metadata_state);
GPR_ASSERT(cur != HAS_COMPRESSION_ALGORITHM && GPR_ASSERT(cur != HAS_COMPRESSION_ALGORITHM &&
cur != NO_COMPRESSION_ALGORITHM); cur != NO_COMPRESSION_ALGORITHM);
if ((cur & CANCELLED_BIT) == 0) { if ((cur & CANCELLED_BIT) == 0) {
gpr_atm_rel_store(&calld->send_initial_metadata_state, if (!gpr_atm_rel_cas(&calld->send_initial_metadata_state, cur,
has_compression_algorithm ? HAS_COMPRESSION_ALGORITHM has_compression_algorithm
: NO_COMPRESSION_ALGORITHM); ? HAS_COMPRESSION_ALGORITHM
: NO_COMPRESSION_ALGORITHM)) {
goto retry_send_im;
}
if (cur != INITIAL_METADATA_UNSEEN) { if (cur != INITIAL_METADATA_UNSEEN) {
grpc_call_next_op(exec_ctx, elem, grpc_call_next_op(exec_ctx, elem,
(grpc_transport_stream_op_batch *)cur); (grpc_transport_stream_op_batch *)cur);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment