kernel-netlink: Don't cache route entries if installation fails
authorTobias Brunner <tobias@strongswan.org>
Fri, 7 Feb 2014 10:37:30 +0000 (11:37 +0100)
committerTobias Brunner <tobias@strongswan.org>
Wed, 12 Feb 2014 12:52:01 +0000 (13:52 +0100)
Fixes #500.

src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c

index d270750..0cbdef1 100644 (file)
@@ -1962,10 +1962,13 @@ METHOD(kernel_net_t, add_route, status_t,
                this->routes_lock->unlock(this->routes_lock);
                return ALREADY_DONE;
        }
-       found = route_entry_clone(&route);
-       this->routes->put(this->routes, found, found);
        status = manage_srcroute(this, RTM_NEWROUTE, NLM_F_CREATE | NLM_F_EXCL,
                                                         dst_net, prefixlen, gateway, src_ip, if_name);
+       if (status == SUCCESS)
+       {
+               found = route_entry_clone(&route);
+               this->routes->put(this->routes, found, found);
+       }
        this->routes_lock->unlock(this->routes_lock);
        return status;
 }