diff --git a/nest/rt-table.c b/nest/rt-table.c
index 318ec2eeee5bcac3e5643cfec577957e85e617d2..c3ec0314760c2c6ca0a73c0c827f26a09984eb71 100644
--- a/nest/rt-table.c
+++ b/nest/rt-table.c
@@ -2705,6 +2705,11 @@ rte_update_out(struct channel *c, const net_addr *n, rte *new, rte *old0, int re
   {
     net = net_get(tab, n);
     src = new->attrs->src;
+
+    rte_store_tmp_attrs(new, rte_update_pool, NULL);
+
+    if (!rta_is_cached(new->attrs))
+      new->attrs = rta_lookup(new->attrs);
   }
   else
   {