In some edge cases, the dynamic BGP starts but doesn't yet pick up
the socket from the peer, when it gets shut down, typically on
a complete shutdown. Fixing this to just close the socket, not assert
it being already picked up.
static void
bgp_down(struct bgp_proto *p)
{
- /* Check that the dynamic BGP socket has been picked up */
- ASSERT_DIE(p->postponed_sk == NULL);
+ /* Close the possibly unpicked dynamic BGP socket */
+ if (p->postponed_sk)
+ sk_close(p->postponed_sk);
+ p->postponed_sk = NULL;
if (bgp_start_state(p) > BSS_PREPARE)
{