Skip to content

Commit 18624e8

Browse files
committed
Fix completion queue creation and initial metadata storage allocation.
1 parent 7f7a8d6 commit 18624e8

File tree

4 files changed

+10
-34
lines changed

4 files changed

+10
-34
lines changed

Sources/CgRPC/shim/channel.c

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,7 @@ cgrpc_channel *cgrpc_channel_create(const char *address) {
2929
grpc_channel_args channel_args;
3030
channel_args.num_args = 0;
3131
c->channel = grpc_insecure_channel_create(address, &channel_args, NULL);
32-
grpc_completion_queue_attributes attr;
33-
attr.version = 1;
34-
attr.cq_completion_type = GRPC_CQ_CURRENT_VERSION;
35-
attr.cq_polling_type = GRPC_CQ_DEFAULT_POLLING;
36-
grpc_completion_queue_factory *factory = grpc_completion_queue_factory_lookup(&attr);
37-
c->completion_queue = grpc_completion_queue_create(factory, &attr, NULL);
32+
c->completion_queue = grpc_completion_queue_create_for_next(NULL);
3833
return c;
3934
}
4035

@@ -66,12 +61,7 @@ cgrpc_channel *cgrpc_channel_create_secure(const char *address,
6661

6762
grpc_channel_credentials *creds = grpc_ssl_credentials_create(pem_root_certs, NULL, NULL);
6863
c->channel = grpc_secure_channel_create(creds, address, channelArgs, NULL);
69-
grpc_completion_queue_attributes attr;
70-
attr.version = 1;
71-
attr.cq_completion_type = GRPC_CQ_CURRENT_VERSION;
72-
attr.cq_polling_type = GRPC_CQ_DEFAULT_POLLING;
73-
grpc_completion_queue_factory *factory = grpc_completion_queue_factory_lookup(&attr);
74-
c->completion_queue = grpc_completion_queue_create(factory, &attr, NULL);
64+
c->completion_queue = grpc_completion_queue_create_for_next(NULL);
7565
return c;
7666
}
7767

@@ -86,19 +76,21 @@ void cgrpc_channel_destroy(cgrpc_channel *c) {
8676
free(c);
8777
}
8878

79+
grpc_slice host_slice;
80+
8981
cgrpc_call *cgrpc_channel_create_call(cgrpc_channel *channel,
9082
const char *method,
9183
const char *host,
9284
double timeout) {
9385
// create call
94-
grpc_slice host_slice = grpc_slice_from_copied_string(host);
86+
host_slice = grpc_slice_from_copied_string(host);
9587
gpr_timespec deadline = cgrpc_deadline_in_seconds_from_now(timeout);
9688
grpc_call *channel_call = grpc_channel_create_call(channel->channel,
9789
NULL,
9890
GRPC_PROPAGATE_DEFAULTS,
9991
channel->completion_queue,
10092
grpc_slice_from_copied_string(method),
101-
&host_slice, // this might crash
93+
&host_slice,
10294
deadline,
10395
NULL);
10496
cgrpc_call *call = (cgrpc_call *) malloc(sizeof(cgrpc_call));

Sources/CgRPC/shim/handler.c

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,7 @@ cgrpc_handler *cgrpc_handler_create_with_server(cgrpc_server *server) {
2727
handler->server = server;
2828
grpc_metadata_array_init(&(handler->request_metadata_recv));
2929
grpc_call_details_init(&(handler->call_details));
30-
grpc_completion_queue_attributes attr;
31-
attr.version = 1;
32-
attr.cq_completion_type = GRPC_CQ_CURRENT_VERSION;
33-
attr.cq_polling_type = GRPC_CQ_DEFAULT_POLLING;
34-
grpc_completion_queue_factory *factory = grpc_completion_queue_factory_lookup(&attr);
35-
handler->completion_queue = grpc_completion_queue_create(factory, &attr, NULL);
30+
handler->completion_queue = grpc_completion_queue_create_for_next(NULL);
3631
return handler;
3732
}
3833

Sources/CgRPC/shim/observers.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,7 @@ void cgrpc_observer_apply(cgrpc_observer *observer, grpc_op *op) {
114114
case GRPC_OP_RECV_INITIAL_METADATA: {
115115
cgrpc_observer_recv_initial_metadata *obs = (cgrpc_observer_recv_initial_metadata *) observer;
116116
grpc_metadata_array_init(&(obs->initial_metadata_recv));
117-
//REVIEW - possibly broken in upgrade to v1.4
118-
// op->data.recv_initial_metadata = &(obs->initial_metadata_recv);
117+
op->data.recv_initial_metadata.recv_initial_metadata = &(obs->initial_metadata_recv);
119118
break;
120119
}
121120
case GRPC_OP_RECV_MESSAGE: {

Sources/CgRPC/shim/server.c

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,7 @@
2424
cgrpc_server *cgrpc_server_create(const char *address) {
2525
cgrpc_server *server = (cgrpc_server *) malloc(sizeof (cgrpc_server));
2626
server->server = grpc_server_create(NULL, NULL);
27-
grpc_completion_queue_attributes attr;
28-
attr.version = 1;
29-
attr.cq_completion_type = GRPC_CQ_CURRENT_VERSION;
30-
attr.cq_polling_type = GRPC_CQ_DEFAULT_POLLING;
31-
grpc_completion_queue_factory *factory = grpc_completion_queue_factory_lookup(&attr);
32-
server->completion_queue = grpc_completion_queue_create(factory, &attr, NULL);
27+
server->completion_queue = grpc_completion_queue_create_for_next(NULL);
3328
grpc_server_register_completion_queue(server->server, server->completion_queue, NULL);
3429
// prepare the server to listen
3530
server->port = grpc_server_add_insecure_http2_port(server->server, address);
@@ -41,12 +36,7 @@ cgrpc_server *cgrpc_server_create_secure(const char *address,
4136
const char *cert_chain) {
4237
cgrpc_server *server = (cgrpc_server *) malloc(sizeof (cgrpc_server));
4338
server->server = grpc_server_create(NULL, NULL);
44-
grpc_completion_queue_attributes attr;
45-
attr.version = 1;
46-
attr.cq_completion_type = GRPC_CQ_CURRENT_VERSION;
47-
attr.cq_polling_type = GRPC_CQ_DEFAULT_POLLING;
48-
grpc_completion_queue_factory *factory = grpc_completion_queue_factory_lookup(&attr);
49-
server->completion_queue = grpc_completion_queue_create(factory, &attr, NULL);
39+
server->completion_queue = grpc_completion_queue_create_for_next(NULL);
5040
grpc_server_register_completion_queue(server->server, server->completion_queue, NULL);
5141

5242
grpc_ssl_pem_key_cert_pair server_credentials;

0 commit comments

Comments
 (0)