From: Tobias Brunner Date: Mon, 12 Nov 2012 16:12:18 +0000 (+0100) Subject: Don't call get_route recursively if a route's gateway matches the destination X-Git-Tag: 5.0.2dr4~202 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5be88ca6bb0f53d53b40aba34ec3eba178df6f0c;p=thirdparty%2Fstrongswan.git Don't call get_route recursively if a route's gateway matches the destination --- diff --git a/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c b/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c index 8b8ab2121f..79ab35ca02 100644 --- a/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c +++ b/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c @@ -1557,8 +1557,11 @@ static host_t *get_route(private_kernel_netlink_net_t *this, host_t *dest, host_t *gtw; gtw = host_create_from_chunk(msg->rtm_family, route->gtw, 0); - route->src_host = get_route(this, gtw, FALSE, candidate); - gtw->destroy(gtw); + if (gtw && !gtw->ip_equals(gtw, dest)) + { + route->src_host = get_route(this, gtw, FALSE, candidate); + } + DESTROY_IF(gtw); if (route->src_host) { /* more of the same */ if (!candidate ||