Index: enum.c =================================================================== --- enum.c (revision 37660) +++ enum.c (working copy) @@ -496,10 +496,19 @@ z = context.naptr_rrs[k].sort_pos; context.naptr_rrs[k].sort_pos = context.naptr_rrs[i].sort_pos; context.naptr_rrs[i].sort_pos = z; - continue; + } else if (ntohs(context.naptr_rrs[k].naptr.order) == ntohs(context.naptr_rrs[i].naptr.order)) { + /* Order is the same, so sort by preference next */ + if (ntohs(context.naptr_rrs[k].naptr.pref) == ntohs(context.naptr_rrs[i].naptr.pref)) { + /* Preference is the same, so sort by tech */ + if ((strcmp(context.naptr_rrs[k].tech, context.naptr_rrs[i].tech) < 0 + && context.naptr_rrs[k].sort_pos > context.naptr_rrs[i].sort_pos) + || (strcmp(context.naptr_rrs[k].tech, context.naptr_rrs[i].tech) > 0 + && context.naptr_rrs[k].sort_pos < context.naptr_rrs[i].sort_pos)) { + z = context.naptr_rrs[k].sort_pos; + context.naptr_rrs[k].sort_pos = context.naptr_rrs[i].sort_pos; + context.naptr_rrs[i].sort_pos = z; } - if (ntohs(context.naptr_rrs[k].naptr.order) == ntohs(context.naptr_rrs[i].naptr.order)) { - if ((ntohs(context.naptr_rrs[k].naptr.pref) < ntohs(context.naptr_rrs[i].naptr.pref) + } else if ((ntohs(context.naptr_rrs[k].naptr.pref) < ntohs(context.naptr_rrs[i].naptr.pref) && context.naptr_rrs[k].sort_pos > context.naptr_rrs[i].sort_pos) || (ntohs(context.naptr_rrs[k].naptr.pref) > ntohs(context.naptr_rrs[i].naptr.pref) && context.naptr_rrs[k].sort_pos < context.naptr_rrs[i].sort_pos)){