]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
BGP: Fixing an unlikely situation, when listening socket is created too late.
authorKaterina Kubecova <katerina.kubecova@nic.cz>
Thu, 4 Sep 2025 08:56:44 +0000 (10:56 +0200)
committerMaria Matejka <mq@ucw.cz>
Thu, 4 Sep 2025 09:29:34 +0000 (11:29 +0200)
closes #298

proto/bgp/bgp.c

index 7c75978c5d9357e7f925ee52ca874870c5b92794..629b50007bbb575722fae74cb22e7d2882e6f968 100644 (file)
@@ -1629,6 +1629,15 @@ bgp_connect_timeout(timer *t)
   if (p->p.proto_state == PS_START)
   {
     bgp_close_conn(conn);
+
+    LOCK_DOMAIN(rtable, bgp_listen_domain);
+    if (p->listen.sock->sk == NULL)
+    {
+      log(L_WARN "%s: Creating listening socket takes suspiciously long. Reentering connect timeout.");
+      bgp_start_timer(p, conn->connect_timer, p->cf->connect_delay_time);
+    }
+    UNLOCK_DOMAIN(rtable, bgp_listen_domain);
+
     bgp_connect(p);
   }
   else