Update the inp stored in a HB-timer when moving an stcb to a new inp.
Use only this stored inp when processing a HB timeout. This fixes a bug which results in a crash. MFC after: 3 days.
This commit is contained in:
parent
a6caae6fcf
commit
629749b60c
@ -2804,6 +2804,7 @@ sctp_move_pcb_and_assoc(struct sctp_inpcb *old_inp, struct sctp_inpcb *new_inp,
|
||||
/* now what about the nets? */
|
||||
TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) {
|
||||
net->pmtu_timer.ep = (void *)new_inp;
|
||||
net->hb_timer.ep = (void *)new_inp;
|
||||
net->rxt_timer.ep = (void *)new_inp;
|
||||
}
|
||||
SCTP_INP_WUNLOCK(new_inp);
|
||||
|
@ -1661,7 +1661,7 @@ sctp_timeout_handler(void *t)
|
||||
sctp_auditing(4, inp, stcb, net);
|
||||
#endif
|
||||
if (!(net->dest_state & SCTP_ADDR_NOHB)) {
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net);
|
||||
sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_HB_TMR, SCTP_SO_NOT_LOCKED);
|
||||
}
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user