* bgp_route.c: Make reannouncing prefixes with changed attributes
	  work again.
diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog
index 009f7f9..29114c8 100644
--- a/bgpd/ChangeLog
+++ b/bgpd/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-23 Hasso Tepper <hasso at quagga.net>
+
+	* bgp_route.c: Make reannouncing prefixes with changed attributes
+	  work again.
+
 2005-02-02 Akihiro Mizutani <mizutani@net-chef.net>
 
 	* bgp_vty.c: Deprecate "neighbor transparent-as" and "neighbor
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 156120b..8c8fa52 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -1098,18 +1098,6 @@
 	new_select = ri;
     }
 
-    if ( (! old_select) || old_select != new_select
-	|| CHECK_FLAG (old_select->flags, BGP_INFO_ATTR_CHANGED))
-	{
-  if (old_select)
-    UNSET_FLAG (old_select->flags, BGP_INFO_SELECTED);
-  if (new_select)
-    {
-      SET_FLAG (new_select->flags, BGP_INFO_SELECTED);
-      UNSET_FLAG (new_select->flags, BGP_INFO_ATTR_CHANGED);
-    }
-      }
-
     result->old = old_select;
     result->new = new_select;
 
@@ -1188,6 +1176,14 @@
         if (old_select && old_select == new_select)
           if (! CHECK_FLAG (old_select->flags, BGP_INFO_ATTR_CHANGED))
             continue;
+  
+        if (old_select)
+          UNSET_FLAG (old_select->flags, BGP_INFO_SELECTED);
+        if (new_select)
+         {
+           SET_FLAG (new_select->flags, BGP_INFO_SELECTED);
+           UNSET_FLAG (new_select->flags, BGP_INFO_ATTR_CHANGED);
+         }
 
         bgp_process_announce_selected (rsclient, new_select, rn, &attr, 
               afi, safi);
@@ -1229,6 +1225,15 @@
        }
     }
 
+  if (old_select)
+    UNSET_FLAG (old_select->flags, BGP_INFO_SELECTED);
+  if (new_select)
+    {
+      SET_FLAG (new_select->flags, BGP_INFO_SELECTED);
+      UNSET_FLAG (new_select->flags, BGP_INFO_ATTR_CHANGED);
+    }
+
+
   /* Check each BGP peer. */
   LIST_LOOP (bgp->peer, peer, nn)
     {