diff --git a/sys/netinet/sctp_timer.c b/sys/netinet/sctp_timer.c index 04c750b990f1..9eff569e0f53 100644 --- a/sys/netinet/sctp_timer.c +++ b/sys/netinet/sctp_timer.c @@ -1439,7 +1439,8 @@ sctp_heartbeat_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, (TAILQ_EMPTY(&stcb->asoc.sent_queue))) { sctp_audit_stream_queues_for_size(inp, stcb); } - if (((net->dest_state & SCTP_ADDR_NOHB) == 0) && + if ((((net->dest_state & SCTP_ADDR_NOHB) == 0) || + (net->dest_state & SCTP_ADDR_UNCONFIRMED)) && (net_was_pf || ((net->dest_state & SCTP_ADDR_PF) == 0))) { /* * When moving to PF during threshold management, a HB has @@ -1459,6 +1460,7 @@ sctp_heartbeat_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, ms_gone_by = 0xffffffff; } if ((ms_gone_by >= net->heart_beat_delay) || + (net->dest_state & SCTP_ADDR_UNCONFIRMED) || (net->dest_state & SCTP_ADDR_PF)) { sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED); }