diff options
author | Bjørn Mork <bjorn@mork.no> | 2015-05-15 10:25:29 +0200 |
---|---|---|
committer | Bjørn Mork <bjorn@mork.no> | 2015-05-15 10:25:29 +0200 |
commit | 13762fce1926efb6b553bf20df256ccf6586f518 (patch) | |
tree | 7ac288e17edd643380c1e18dda5b49d02839fa85 /eperd/tcputil.c | |
parent | 73e699faf130d0fc0f2f076d95db9dbd7f42a8b6 (diff) |
ripe-atlas-fw: imported version 46704670
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Diffstat (limited to 'eperd/tcputil.c')
-rw-r--r-- | eperd/tcputil.c | 57 |
1 files changed, 33 insertions, 24 deletions
diff --git a/eperd/tcputil.c b/eperd/tcputil.c index 355f42a..201f1eb 100644 --- a/eperd/tcputil.c +++ b/eperd/tcputil.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 RIPE NCC <atlas@ripe.net> + * Copyright (c) 2013-2014 RIPE NCC <atlas@ripe.net> * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. * tcputil.c */ @@ -54,24 +54,8 @@ void tu_restart_connect(struct tu_env *env) int r; struct bufferevent *bev; - /* Delete old bev */ - if (env->bev) - { - bufferevent_free(env->bev); - env->bev= NULL; - } - - /* And create a new one */ - r= create_bev(env); - if (r == -1) - { - return; - } - bev= env->bev; - /* Connect failed, try next address */ - if (env->dns_curr) - /* Just to be on the safe side */ + if (env->dns_curr) /* Just to be on the safe side */ { env->dns_curr= env->dns_curr->ai_next; } @@ -81,6 +65,22 @@ void tu_restart_connect(struct tu_env *env) env->beforeconnect(env, env->dns_curr->ai_addr, env->dns_curr->ai_addrlen); + + /* Delete old bev */ + if (env->bev) + { + bufferevent_free(env->bev); + env->bev= NULL; + } + + /* And create a new one */ + r= create_bev(env); + if (r == -1) + { + return; + } + bev= env->bev; + if (bufferevent_socket_connect(bev, env->dns_curr->ai_addr, env->dns_curr->ai_addrlen) == 0) @@ -158,18 +158,27 @@ static void dns_cb(int result, struct evutil_addrinfo *res, void *ctx) env->reportcount(env, count); - r= create_bev(env); - if (r == -1) - { - return; - } - while (env->dns_curr) { evtimer_add(&env->timer, &env->interval); env->beforeconnect(env, env->dns_curr->ai_addr, env->dns_curr->ai_addrlen); + + /* Delete old bev if any */ + if (env->bev) + { + bufferevent_free(env->bev); + env->bev= NULL; + } + + /* And create a new one */ + r= create_bev(env); + if (r == -1) + { + return; + } + bev= env->bev; if (bufferevent_socket_connect(bev, env->dns_curr->ai_addr, |