The branch main has been updated by tuexen:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=8b3d0f6439fa27f0d37a9a7b9d27bbfdfdf487c4

commit 8b3d0f6439fa27f0d37a9a7b9d27bbfdfdf487c4
Author:     Michael Tuexen <tue...@freebsd.org>
AuthorDate: 2021-05-03 00:50:05 +0000
Commit:     Michael Tuexen <tue...@freebsd.org>
CommitDate: 2021-05-03 00:50:05 +0000

    sctp: improve address list scanning
    
    If the alternate address has to be removed, force the stack to
    find a new one, if it is still needed.
    
    MFC after:      3 days
---
 sys/netinet/sctp_pcb.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/sys/netinet/sctp_pcb.c b/sys/netinet/sctp_pcb.c
index f4264ab387f1..08acccbf9185 100644
--- a/sys/netinet/sctp_pcb.c
+++ b/sys/netinet/sctp_pcb.c
@@ -6562,11 +6562,15 @@ next_param:
                        /* remove and free it */
                        stcb->asoc.numnets--;
                        TAILQ_REMOVE(&stcb->asoc.nets, net, sctp_next);
-                       sctp_free_remote_addr(net);
+                       if (net == stcb->asoc.alternate) {
+                               sctp_free_remote_addr(stcb->asoc.alternate);
+                               stcb->asoc.alternate = NULL;
+                       }
                        if (net == stcb->asoc.primary_destination) {
                                stcb->asoc.primary_destination = NULL;
                                sctp_select_primary_destination(stcb);
                        }
+                       sctp_free_remote_addr(net);
                }
        }
        if ((stcb->asoc.ecn_supported == 1) &&
_______________________________________________
dev-commits-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-all
To unsubscribe, send any mail to "dev-commits-src-all-unsubscr...@freebsd.org"

Reply via email to