aboutsummaryrefslogtreecommitdiff
path: root/eperd/tcputil.c
diff options
context:
space:
mode:
Diffstat (limited to 'eperd/tcputil.c')
-rw-r--r--eperd/tcputil.c57
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,