]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: move assert out of error case 5148/head
authorQuentin Young <qlyoung@cumulusnetworks.com>
Mon, 14 Oct 2019 16:09:36 +0000 (16:09 +0000)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Mon, 14 Oct 2019 16:09:36 +0000 (16:09 +0000)
bgp_process_packets has an assert to make sure an appropriate amount of
working space in the input buffer has been freed up for future reads.
However, this assert shouldn't be made when we have encountered an error
that's going to tear down the session, because in this case we may not
be able to process the full contents of the input buffer.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
bgpd/bgp_io.c

index c2d06a4b5a078941cb9261f6ad36d2e88f071877..c8b7e5155ff0b5ce54bdf29116b242fc68d0dd37 100644 (file)
@@ -242,13 +242,13 @@ static int bgp_process_reads(struct thread *thread)
                        break;
        }
 
-       assert(ringbuf_space(peer->ibuf_work) >= BGP_MAX_PACKET_SIZE);
-
        /* handle invalid header */
        if (fatal) {
                /* wipe buffer just in case someone screwed up */
                ringbuf_wipe(peer->ibuf_work);
        } else {
+               assert(ringbuf_space(peer->ibuf_work) >= BGP_MAX_PACKET_SIZE);
+
                thread_add_read(fpt->master, bgp_process_reads, peer, peer->fd,
                                &peer->t_read);
                if (added_pkt)