Make send/recv_metadata take ownership of passed in metadata

pull/151/head
Craig Tiller 10 years ago committed by Craig Tiller
parent d2d0a1184e
commit 12b533de59
  1. 4
      src/core/channel/channel_stack.c
  2. 12
      src/core/channel/http_client_filter.c
  3. 4
      src/core/channel/http_server_filter.c
  4. 2
      src/core/security/auth.c

@ -209,7 +209,7 @@ void grpc_call_element_recv_metadata(grpc_call_element *cur_elem,
metadata_op.dir = GRPC_CALL_UP; metadata_op.dir = GRPC_CALL_UP;
metadata_op.done_cb = do_nothing; metadata_op.done_cb = do_nothing;
metadata_op.user_data = NULL; metadata_op.user_data = NULL;
metadata_op.data.metadata = grpc_mdelem_ref(mdelem); metadata_op.data.metadata = mdelem;
grpc_call_next_op(cur_elem, &metadata_op); grpc_call_next_op(cur_elem, &metadata_op);
} }
@ -220,7 +220,7 @@ void grpc_call_element_send_metadata(grpc_call_element *cur_elem,
metadata_op.dir = GRPC_CALL_DOWN; metadata_op.dir = GRPC_CALL_DOWN;
metadata_op.done_cb = do_nothing; metadata_op.done_cb = do_nothing;
metadata_op.user_data = NULL; metadata_op.user_data = NULL;
metadata_op.data.metadata = grpc_mdelem_ref(mdelem); metadata_op.data.metadata = mdelem;
grpc_call_next_op(cur_elem, &metadata_op); grpc_call_next_op(cur_elem, &metadata_op);
} }

@ -67,8 +67,8 @@ static void call_op(grpc_call_element *elem, grpc_call_element *from_elem,
/* Send : prefixed headers, which have to be before any application /* Send : prefixed headers, which have to be before any application
* layer headers. */ * layer headers. */
calld->sent_headers = 1; calld->sent_headers = 1;
grpc_call_element_send_metadata(elem, channeld->method); grpc_call_element_send_metadata(elem, grpc_mdelem_ref(channeld->method));
grpc_call_element_send_metadata(elem, channeld->scheme); grpc_call_element_send_metadata(elem, grpc_mdelem_ref(channeld->scheme));
} }
grpc_call_next_op(elem, op); grpc_call_next_op(elem, op);
break; break;
@ -76,12 +76,12 @@ static void call_op(grpc_call_element *elem, grpc_call_element *from_elem,
if (!calld->sent_headers) { if (!calld->sent_headers) {
/* Send : prefixed headers, if we haven't already */ /* Send : prefixed headers, if we haven't already */
calld->sent_headers = 1; calld->sent_headers = 1;
grpc_call_element_send_metadata(elem, channeld->method); grpc_call_element_send_metadata(elem, grpc_mdelem_ref(channeld->method));
grpc_call_element_send_metadata(elem, channeld->scheme); grpc_call_element_send_metadata(elem, grpc_mdelem_ref(channeld->scheme));
} }
/* Send non : prefixed headers */ /* Send non : prefixed headers */
grpc_call_element_send_metadata(elem, channeld->te_trailers); grpc_call_element_send_metadata(elem, grpc_mdelem_ref(channeld->te_trailers));
grpc_call_element_send_metadata(elem, channeld->content_type); grpc_call_element_send_metadata(elem, grpc_mdelem_ref(channeld->content_type));
grpc_call_next_op(elem, op); grpc_call_next_op(elem, op);
break; break;
default: default:

@ -127,7 +127,7 @@ static void call_op(grpc_call_element *elem, grpc_call_element *from_elem,
gpr_log(GPR_ERROR, "Received :path twice"); gpr_log(GPR_ERROR, "Received :path twice");
grpc_mdelem_unref(calld->path); grpc_mdelem_unref(calld->path);
} }
calld->path = grpc_mdelem_ref(op->data.metadata); calld->path = op->data.metadata;
op->done_cb(op->user_data, GRPC_OP_OK); op->done_cb(op->user_data, GRPC_OP_OK);
} else { } else {
/* pass the event up */ /* pass the event up */
@ -163,7 +163,7 @@ static void call_op(grpc_call_element *elem, grpc_call_element *from_elem,
if (!calld->sent_status) { if (!calld->sent_status) {
calld->sent_status = 1; calld->sent_status = 1;
/* status is reffed by grpc_call_element_send_metadata */ /* status is reffed by grpc_call_element_send_metadata */
grpc_call_element_send_metadata(elem, channeld->status); grpc_call_element_send_metadata(elem, grpc_mdelem_ref(channeld->status));
} }
grpc_call_next_op(elem, op); grpc_call_next_op(elem, op);
break; break;

@ -57,7 +57,7 @@ static void on_credentials_metadata(void *user_data, grpc_mdelem **md_elems,
grpc_call_element *elem = (grpc_call_element *)user_data; grpc_call_element *elem = (grpc_call_element *)user_data;
size_t i; size_t i;
for (i = 0; i < num_md; i++) { for (i = 0; i < num_md; i++) {
grpc_call_element_send_metadata(elem, md_elems[i]); grpc_call_element_send_metadata(elem, grpc_mdelem_ref(md_elems[i]));
} }
grpc_call_next_op(elem, &((call_data *)elem->call_data)->op); grpc_call_next_op(elem, &((call_data *)elem->call_data)->op);
} }

Loading…
Cancel
Save