|
|
|
@ -645,11 +645,24 @@ static void on_alarm(grpc_exec_ctx *exec_ctx, void *arg, int iomgr_success) { |
|
|
|
|
iomgr_success = 0; |
|
|
|
|
} |
|
|
|
|
connectivity_state_changed_locked(exec_ctx, c, "alarm"); |
|
|
|
|
gpr_mu_unlock(&c->mu); |
|
|
|
|
if (iomgr_success) { |
|
|
|
|
gpr_mu_unlock(&c->mu); |
|
|
|
|
update_reconnect_parameters(c); |
|
|
|
|
continue_connect(exec_ctx, c); |
|
|
|
|
} else { |
|
|
|
|
waiting_for_connect *w4c; |
|
|
|
|
w4c = c->waiting; |
|
|
|
|
c->waiting = NULL; |
|
|
|
|
gpr_mu_unlock(&c->mu); |
|
|
|
|
while (w4c != NULL) { |
|
|
|
|
waiting_for_connect *next = w4c->next; |
|
|
|
|
grpc_subchannel_del_interested_party(exec_ctx, w4c->subchannel, |
|
|
|
|
w4c->pollset); |
|
|
|
|
w4c->notify->cb(exec_ctx, w4c->notify->cb_arg, 0); |
|
|
|
|
GRPC_SUBCHANNEL_UNREF(exec_ctx, w4c->subchannel, "waiting_for_connect"); |
|
|
|
|
gpr_free(w4c); |
|
|
|
|
w4c = next; |
|
|
|
|
} |
|
|
|
|
GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, c->master, "connecting"); |
|
|
|
|
GRPC_SUBCHANNEL_UNREF(exec_ctx, c, "connecting"); |
|
|
|
|
} |
|
|
|
|