X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fchat.git;a=blobdiff_plain;f=sort_udns.c;h=8b919f628b31b7546940810f95146abae6ebf3cd;hp=8b0336bab578e363758fe25b34cbda34355430a8;hb=44e0294761ee1b20ed7eedf8e376124b4f97a620;hpb=9f0f17cd57970def9808a7899f178edd27185ba2;ds=sidebyside diff --git a/sort_udns.c b/sort_udns.c index 8b0336b..8b919f6 100644 --- a/sort_udns.c +++ b/sort_udns.c @@ -79,7 +79,7 @@ static void dns_srv_switch (struct dns_srv* srvaddr, int j, int i) * according to RFC 2782.. */ -void dns_srv_sort (struct dns_srv* srvaddr, int n) +void hc_dns_srv_sort (struct dns_srv* srvaddr, int n) { int i; int j; @@ -93,32 +93,32 @@ void dns_srv_sort (struct dns_srv* srvaddr, int n) sum = 0; /* Compute the sum of weights for the priority prio */ for (i = j; i < n && srvaddr[i].priority == prio; i++) - { - sum += srvaddr[i].weight; - } + { + sum += srvaddr[i].weight; + } /* If there is no more nodes with priority prio, get next prio */ if (i == j && srvaddr[i].priority > prio) - { - prio = srvaddr[i].priority; - } + { + prio = srvaddr[i].priority; + } else - { - while (sum > 0) - { - wrand = random_int_range (0, sum + 1); - for (i = j; i < n && srvaddr[i].weight < wrand; i++) - { - wrand -= srvaddr[i].weight; - } - assert (i < n); - assert (srvaddr[i].priority == prio); - dns_srv_switch (srvaddr, j, i); - sum -= srvaddr[j].weight; - j++; - } - /* Those remaining addresses with weight 0 */ - for (i = j; i < n && srvaddr[i].priority == prio; i++, j++); - } + { + while (sum > 0) + { + wrand = random_int_range (0, sum + 1); + for (i = j; i < n && srvaddr[i].weight < wrand; i++) + { + wrand -= srvaddr[i].weight; + } + assert (i < n); + assert (srvaddr[i].priority == prio); + dns_srv_switch (srvaddr, j, i); + sum -= srvaddr[j].weight; + j++; + } + /* Those remaining addresses with weight 0 */ + for (i = j; i < n && srvaddr[i].priority == prio; i++, j++); + } } } @@ -138,7 +138,7 @@ int main (int argc, char** argv) char* domain = "holoscopio.com."; if (argc > 1) domain = argv[1]; - dns_init (1); + dns_init (NULL, 1); rr = dns_resolve_srv (NULL, domain, "xmpp-client", "tcp", 0); if (rr == NULL) { @@ -152,7 +152,7 @@ int main (int argc, char** argv) printf ("%s %d %d %d\n", srv->name, srv->port, srv->priority, srv->weight); } srandom (time (0)); - dns_srv_sort (rr->dnssrv_srv, rr->dnssrv_nrr); + hc_dns_srv_sort (rr->dnssrv_srv, rr->dnssrv_nrr); printf ("\nAfter sorting:\n"); for (i = 0; i < rr->dnssrv_nrr; i++) {