aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/ext/lb_policy/round_robin
diff options
context:
space:
mode:
authorGravatar David Garcia Quintas <dgq@google.com>2016-11-01 04:09:05 +0100
committerGravatar David Garcia Quintas <dgq@google.com>2016-10-31 22:31:51 -0700
commit7ec291330c4442bc2d4adc1f93ff8f7bd9149c14 (patch)
tree8aac999ab7df467cd9d63abbbbb4c33f4e05de36 /src/core/ext/lb_policy/round_robin
parent6cb547443b7674279a069f51481cc7b30193c6da (diff)
PR comments
Diffstat (limited to 'src/core/ext/lb_policy/round_robin')
-rw-r--r--src/core/ext/lb_policy/round_robin/round_robin.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/core/ext/lb_policy/round_robin/round_robin.c b/src/core/ext/lb_policy/round_robin/round_robin.c
index 5f530d54fe..3611287450 100644
--- a/src/core/ext/lb_policy/round_robin/round_robin.c
+++ b/src/core/ext/lb_policy/round_robin/round_robin.c
@@ -121,7 +121,7 @@ typedef struct {
/** the subchannel's target user data */
void *user_data;
/** vtable to operate over \a user_data */
- grpc_lb_user_data_vtable user_data_vtable;
+ const grpc_lb_user_data_vtable *user_data_vtable;
} subchannel_data;
struct round_robin_lb_policy {
@@ -269,7 +269,9 @@ static void rr_destroy(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) {
for (size_t i = 0; i < p->num_subchannels; i++) {
subchannel_data *sd = p->subchannels[i];
GRPC_SUBCHANNEL_UNREF(exec_ctx, sd->subchannel, "round_robin_destroy");
- sd->user_data_vtable.destroy(sd->user_data);
+ if (sd->user_data_vtable != NULL) {
+ sd->user_data_vtable->destroy(sd->user_data);
+ }
gpr_free(sd);
}
@@ -298,7 +300,7 @@ static void rr_shutdown(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) {
gpr_mu_lock(&p->mu);
if (grpc_lb_round_robin_trace) {
- gpr_log(GPR_DEBUG, "Shutting down Round Robin policy at %p", pol);
+ gpr_log(GPR_DEBUG, "Shutting down Round Robin policy at %p", (void *)pol);
}
p->shutdown = 1;
@@ -412,7 +414,7 @@ static int rr_pick(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol,
gpr_mu_lock(&p->mu);
if (grpc_lb_round_robin_trace) {
- gpr_log(GPR_INFO, "Round Robin %p trying to pick", pol);
+ gpr_log(GPR_INFO, "Round Robin %p trying to pick", (void *)pol);
}
if ((selected = peek_next_connected_locked(p))) {
@@ -674,9 +676,9 @@ static grpc_lb_policy *round_robin_create(grpc_exec_ctx *exec_ctx,
sd->policy = p;
sd->index = subchannel_idx;
sd->subchannel = subchannel;
- sd->user_data_vtable = *addresses->user_data_vtable;
+ sd->user_data_vtable = addresses->user_data_vtable;
sd->user_data =
- sd->user_data_vtable.copy(addresses->addresses[i].user_data);
+ sd->user_data_vtable->copy(addresses->addresses[i].user_data);
++subchannel_idx;
grpc_closure_init(&sd->connectivity_changed_closure,
rr_connectivity_changed, sd);