diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog
index fac0df9..653ce86 100644
--- a/bgpd/ChangeLog
+++ b/bgpd/ChangeLog
@@ -1,3 +1,13 @@
+2007-04-08 Paul Jakma <paul.jakma@sun.com>
+
+	* bgp_route.c: (general) Same bug as fixed on 2006-11-28 by ajs for
+	  bgp static routes, but for main BGP RIB: Quick 'flap' of routes
+	  can cause bgpd to mistake a new route for a duplicate route,
+	  due to presence of removed, but not yet processed BGP RIB entry.
+	  (bgp_update_rsclient) Ignore REMOVED bgp_info for duplicate,
+	  restore route instead.
+	  (bgp_update_main) Ditto.
+
 2007-04-07 Paul Jakma <paul.jakma@sun.com>
 
 	* bgpd.c: (general) Fix bug #352
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index c464cd0..c33c596 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -1742,7 +1742,8 @@
       ri->uptime = time (NULL);
 
       /* Same attribute comes in. */
-      if (attrhash_cmp (ri->attr, attr_new))
+      if (!CHECK_FLAG(ri->flags, BGP_INFO_REMOVED)
+          && attrhash_cmp (ri->attr, attr_new))
         {
 
           bgp_info_unset_flag (rn, ri, BGP_INFO_ATTR_CHANGED);
@@ -1760,6 +1761,10 @@
                     return;
         }
 
+      /* Withdraw/Announce before we fully processed the withdraw */
+      if (CHECK_FLAG(ri->flags, BGP_INFO_REMOVED))
+        bgp_info_restore (rn, ri);
+      
       /* Received Logging. */
       if (BGP_DEBUG (update, UPDATE_IN))
         zlog (peer->log, LOG_DEBUG, "%s rcvd %s/%d for RS-client %s",
@@ -1987,7 +1992,8 @@
       ri->uptime = time (NULL);
 
       /* Same attribute comes in. */
-      if (attrhash_cmp (ri->attr, attr_new))
+      if (!CHECK_FLAG (ri->flags, BGP_INFO_REMOVED) 
+          && attrhash_cmp (ri->attr, attr_new))
 	{
 	  bgp_info_unset_flag (rn, ri, BGP_INFO_ATTR_CHANGED);
 
@@ -2007,7 +2013,7 @@
                   bgp_process (bgp, rn, afi, safi);
                 }
 	    }
-	  else
+          else /* Duplicate - odd */
 	    {
 	      if (BGP_DEBUG (update, UPDATE_IN))  
 		zlog (peer->log, LOG_DEBUG,
@@ -2029,6 +2035,17 @@
 	  return 0;
 	}
 
+      /* Withdraw/Announce before we fully processed the withdraw */
+      if (CHECK_FLAG(ri->flags, BGP_INFO_REMOVED))
+        {
+          if (BGP_DEBUG (update, UPDATE_IN))
+            zlog (peer->log, LOG_DEBUG, "%s rcvd %s/%d, flapped quicker than processing",
+            peer->host,
+            inet_ntop(p->family, &p->u.prefix, buf, SU_ADDRSTRLEN),
+            p->prefixlen);
+          bgp_info_restore (rn, ri);
+        }
+
       /* Received Logging. */
       if (BGP_DEBUG (update, UPDATE_IN))  
 	zlog (peer->log, LOG_DEBUG, "%s rcvd %s/%d",
