+ slog(st,LOG_PEER_ADDRS,"resolution of %s completed, %d addrs, eg: %s",
+ address, naddrs, comm_addr_to_string(&addrs[0]));;
+
+ int n_tocopy = MIN(st->transport_peers_max - st->resolving_n_results,
+ naddrs);
+ COPY_ARRAY(st->resolving_results + st->resolving_n_results,
+ addrs,
+ n_tocopy);
+ st->resolving_n_results += naddrs;
+ }
+
+ decrement_resolving_count(st,1);
+}
+
+static void decrement_resolving_count(struct site *st, int by)
+{
+ assert(st->resolving_count>0);
+ st->resolving_count-=by;
+
+ if (st->resolving_count)
+ return;
+
+ /* OK, we are done with them all. Handle combined results. */
+
+ const struct comm_addr *addrs=st->resolving_results;
+ int naddrs=st->resolving_n_results;
+
+ if (naddrs) {
+ slog(st,LOG_STATE,"resolution completed, %d addrs, eg: %s",
+ naddrs, comm_addr_to_string(&addrs[0]));;
+ if (st->resolving_n_results > st->transport_peers_max) {
+ slog(st,LOG_STATE,"resolution of supplied addresses/names"
+ " yielded too many results (%d > %d), some ignored",
+ st->resolving_n_results, st->transport_peers_max);
+ st->resolving_n_results=st->transport_peers_max;
+ }