* 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;
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++);
+ }
}
}
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)
{
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++)
{