r->func(r, ARES_FAIL);
} else {
T( trace(T_ADMIN, "admin: resop %s ok", BGTAG(r)); )
+ r->sa.sin.sin_family = AF_INET;
memcpy(&r->sa.sin.sin_addr, h->h_addr, sizeof(struct in_addr));
+ r->sa.sin.sin_port = htons(r->port);
r->func(r, ARES_OK);
}
sel_rmtimer(&r->t);
a_fail(a, "invalid-port", "%lu", pt, A_END);
goto fail;
}
- r->sa.sin.sin_port = htons(pt);
+ r->port = pt;
/* --- Report backgrounding --- *
*
if (inet_aton(av[i], &r->sa.sin.sin_addr)) {
T( trace(T_ADMIN, "admin: resop %s done the easy way", BGTAG(r)); )
+ r->sa.sin.sin_family = AF_INET;
+ r->sa.sin.sin_port = htons(r->port);
func(r, ARES_OK);
xfree(r->addr);
a_bgrelease(&r->bg);
bres_client r; /* Background resolver task */
sel_timer t; /* Timer for resolver */
addr sa; /* Socket address */
+ unsigned port; /* Port number chosen */
size_t sasz; /* Socket address size */
void (*func)(struct admin_resop *, int); /* Handler */
} admin_resop;