]> 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>
Mon, 22 Sep 2025 11:35:02 +0000 (13:35 +0200)
closes #298

proto/bgp/bgp.c

index aaf8c96c3a8b5d2922469e3a5e7ab247a979ed75..62bae0cc05822bd05eb760d0a973084ba8cae436 100644 (file)
@@ -1174,6 +1174,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