aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/client_config/lb_policies/pick_first.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/client_config/lb_policies/pick_first.c')
-rw-r--r--src/core/client_config/lb_policies/pick_first.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/core/client_config/lb_policies/pick_first.c b/src/core/client_config/lb_policies/pick_first.c
index ffdae75b28..3967350a9b 100644
--- a/src/core/client_config/lb_policies/pick_first.c
+++ b/src/core/client_config/lb_policies/pick_first.c
@@ -85,8 +85,16 @@ void pf_destroy(grpc_lb_policy *pol) {
}
void pf_shutdown(grpc_lb_policy *pol) {
- /* pick_first_lb_policy *p = (pick_first_lb_policy*)pol; */
- abort();
+ pick_first_lb_policy *p = (pick_first_lb_policy*)pol;
+ pending_pick *pp;
+ gpr_mu_lock(&p->mu);
+ while ((pp = p->pending_picks)) {
+ p->pending_picks = pp->next;
+ *pp->target = NULL;
+ grpc_iomgr_add_delayed_callback(pp->on_complete, 0);
+ gpr_free(pp);
+ }
+ gpr_mu_unlock(&p->mu);
}
void pf_pick(grpc_lb_policy *pol, grpc_pollset *pollset,