* bgp_route.c: Make reannouncing prefixes with changed attributes
	  work again.
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)
     {